home *** CD-ROM | disk | FTP | other *** search
/ HAKERIS 11 / HAKERIS 11.ISO / linux / system / LinuxConsole 0.4 / linuxconsole0.4install-en.iso / guile0.4.lcm / share / guile / 1.6.0 / guile-procedures.txt
Encoding:
Text File  |  2004-01-06  |  205.3 KB  |  6,163 lines

  1. This is guile-procedures.txt, produced by makeinfo version 4.2 from
  2. guile-procedures.texi.
  3.  
  4.     acons
  5.  
  6.  - Scheme Procedure: acons key value alist
  7.      Add a new key-value pair to ALIST.  A new pair is created whose
  8.      car is KEY and whose cdr is VALUE, and the pair is consed onto
  9.      ALIST, and the new list is returned.  This function is _not_
  10.      destructive; ALIST is not modified.
  11.  
  12.     sloppy-assq
  13.  
  14.  - Scheme Procedure: sloppy-assq key alist
  15.      Behaves like `assq' but does not do any error checking.
  16.      Recommended only for use in Guile internals.
  17.  
  18.     sloppy-assv
  19.  
  20.  - Scheme Procedure: sloppy-assv key alist
  21.      Behaves like `assv' but does not do any error checking.
  22.      Recommended only for use in Guile internals.
  23.  
  24.     sloppy-assoc
  25.  
  26.  - Scheme Procedure: sloppy-assoc key alist
  27.      Behaves like `assoc' but does not do any error checking.
  28.      Recommended only for use in Guile internals.
  29.  
  30.     assq
  31.  
  32.  - Scheme Procedure: assq key alist
  33.  - Scheme Procedure: assv key alist
  34.  - Scheme Procedure: assoc key alist
  35.      Fetch the entry in ALIST that is associated with KEY.  To decide
  36.      whether the argument KEY matches a particular entry in ALIST,
  37.      `assq' compares keys with `eq?', `assv' uses `eqv?' and `assoc'
  38.      uses `equal?'.  If KEY cannot be found in ALIST (according to
  39.      whichever equality predicate is in use), then return `#f'.  These
  40.      functions return the entire alist entry found (i.e. both the key
  41.      and the value).
  42.  
  43.     assv
  44.  
  45.  - Scheme Procedure: assv key alist
  46.      Behaves like `assq' but uses `eqv?' for key comparison.
  47.  
  48.     assoc
  49.  
  50.  - Scheme Procedure: assoc key alist
  51.      Behaves like `assq' but uses `equal?' for key comparison.
  52.  
  53.     assq-ref
  54.  
  55.  - Scheme Procedure: assq-ref alist key
  56.  - Scheme Procedure: assv-ref alist key
  57.  - Scheme Procedure: assoc-ref alist key
  58.      Like `assq', `assv' and `assoc', except that only the value
  59.      associated with KEY in ALIST is returned.  These functions are
  60.      equivalent to
  61.  
  62.           (let ((ent (ASSOCIATOR KEY ALIST)))
  63.             (and ent (cdr ent)))
  64.  
  65.      where ASSOCIATOR is one of `assq', `assv' or `assoc'.
  66.  
  67.     assv-ref
  68.  
  69.  - Scheme Procedure: assv-ref alist key
  70.      Behaves like `assq-ref' but uses `eqv?' for key comparison.
  71.  
  72.     assoc-ref
  73.  
  74.  - Scheme Procedure: assoc-ref alist key
  75.      Behaves like `assq-ref' but uses `equal?' for key comparison.
  76.  
  77.     assq-set!
  78.  
  79.  - Scheme Procedure: assq-set! alist key val
  80.  - Scheme Procedure: assv-set! alist key value
  81.  - Scheme Procedure: assoc-set! alist key value
  82.      Reassociate KEY in ALIST with VALUE: find any existing ALIST entry
  83.      for KEY and associate it with the new VALUE.  If ALIST does not
  84.      contain an entry for KEY, add a new one.  Return the (possibly
  85.      new) alist.
  86.  
  87.      These functions do not attempt to verify the structure of ALIST,
  88.      and so may cause unusual results if passed an object that is not an
  89.      association list.
  90.  
  91.     assv-set!
  92.  
  93.  - Scheme Procedure: assv-set! alist key val
  94.      Behaves like `assq-set!' but uses `eqv?' for key comparison.
  95.  
  96.     assoc-set!
  97.  
  98.  - Scheme Procedure: assoc-set! alist key val
  99.      Behaves like `assq-set!' but uses `equal?' for key comparison.
  100.  
  101.     assq-remove!
  102.  
  103.  - Scheme Procedure: assq-remove! alist key
  104.  - Scheme Procedure: assv-remove! alist key
  105.  - Scheme Procedure: assoc-remove! alist key
  106.      Delete the first entry in ALIST associated with KEY, and return
  107.      the resulting alist.
  108.  
  109.     assv-remove!
  110.  
  111.  - Scheme Procedure: assv-remove! alist key
  112.      Behaves like `assq-remove!' but uses `eqv?' for key comparison.
  113.  
  114.     assoc-remove!
  115.  
  116.  - Scheme Procedure: assoc-remove! alist key
  117.      Behaves like `assq-remove!' but uses `equal?' for key comparison.
  118.  
  119.     make-arbiter
  120.  
  121.  - Scheme Procedure: make-arbiter name
  122.      Return an object of type arbiter and name NAME. Its state is
  123.      initially unlocked.  Arbiters are a way to achieve process
  124.      synchronization.
  125.  
  126.     try-arbiter
  127.  
  128.  - Scheme Procedure: try-arbiter arb
  129.      Return `#t' and lock the arbiter ARB if the arbiter was unlocked.
  130.      Otherwise, return `#f'.
  131.  
  132.     release-arbiter
  133.  
  134.  - Scheme Procedure: release-arbiter arb
  135.      Return `#t' and unlock the arbiter ARB if the arbiter was locked.
  136.      Otherwise, return `#f'.
  137.  
  138.     async
  139.  
  140.  - Scheme Procedure: async thunk
  141.      Create a new async for the procedure THUNK.
  142.  
  143.     system-async
  144.  
  145.  - Scheme Procedure: system-async thunk
  146.      Create a new async for the procedure THUNK.  Also add it to the
  147.      system's list of active async objects.
  148.  
  149.     async-mark
  150.  
  151.  - Scheme Procedure: async-mark a
  152.      Mark the async A for future execution.
  153.  
  154.     system-async-mark
  155.  
  156.  - Scheme Procedure: system-async-mark a
  157.      Mark the async A for future execution.
  158.  
  159.     run-asyncs
  160.  
  161.  - Scheme Procedure: run-asyncs list_of_a
  162.      Execute all thunks from the asyncs of the list LIST_OF_A.
  163.  
  164.     noop
  165.  
  166.  - Scheme Procedure: noop . args
  167.      Do nothing.  When called without arguments, return `#f', otherwise
  168.      return the first argument.
  169.  
  170.     unmask-signals
  171.  
  172.  - Scheme Procedure: unmask-signals
  173.      Unmask signals. The returned value is not specified.
  174.  
  175.     mask-signals
  176.  
  177.  - Scheme Procedure: mask-signals
  178.      Mask signals. The returned value is not specified.
  179.  
  180.     display-error
  181.  
  182.  - Scheme Procedure: display-error stack port subr message args rest
  183.      Display an error message to the output port PORT.  STACK is the
  184.      saved stack for the error, SUBR is the name of the procedure in
  185.      which the error occurred and MESSAGE is the actual error message,
  186.      which may contain formatting instructions. These will format the
  187.      arguments in the list ARGS accordingly.  REST is currently ignored.
  188.  
  189.     display-application
  190.  
  191.  - Scheme Procedure: display-application frame [port [indent]]
  192.      Display a procedure application FRAME to the output port PORT.
  193.      INDENT specifies the indentation of the output.
  194.  
  195.     display-backtrace
  196.  
  197.  - Scheme Procedure: display-backtrace stack port [first [depth]]
  198.      Display a backtrace to the output port PORT. STACK is the stack to
  199.      take the backtrace from, FIRST specifies where in the stack to
  200.      start and DEPTH how much frames to display. Both FIRST and DEPTH
  201.      can be `#f', which means that default values will be used.
  202.  
  203.     backtrace
  204.  
  205.  - Scheme Procedure: backtrace
  206.      Display a backtrace of the stack saved by the last error to the
  207.      current output port.
  208.  
  209.     not
  210.  
  211.  - Scheme Procedure: not x
  212.      Return `#t' iff X is `#f', else return `#f'.
  213.  
  214.     boolean?
  215.  
  216.  - Scheme Procedure: boolean? obj
  217.      Return `#t' iff OBJ is either `#t' or `#f'.
  218.  
  219.     char?
  220.  
  221.  - Scheme Procedure: char? x
  222.      Return `#t' iff X is a character, else `#f'.
  223.  
  224.     char=?
  225.  
  226.  - Scheme Procedure: char=? x y
  227.      Return `#t' iff X is the same character as Y, else `#f'.
  228.  
  229.     char<?
  230.  
  231.  - Scheme Procedure: char<? x y
  232.      Return `#t' iff X is less than Y in the ASCII sequence, else `#f'.
  233.  
  234.     char<=?
  235.  
  236.  - Scheme Procedure: char<=? x y
  237.      Return `#t' iff X is less than or equal to Y in the ASCII
  238.      sequence, else `#f'.
  239.  
  240.     char>?
  241.  
  242.  - Scheme Procedure: char>? x y
  243.      Return `#t' iff X is greater than Y in the ASCII sequence, else
  244.      `#f'.
  245.  
  246.     char>=?
  247.  
  248.  - Scheme Procedure: char>=? x y
  249.      Return `#t' iff X is greater than or equal to Y in the ASCII
  250.      sequence, else `#f'.
  251.  
  252.     char-ci=?
  253.  
  254.  - Scheme Procedure: char-ci=? x y
  255.      Return `#t' iff X is the same character as Y ignoring case, else
  256.      `#f'.
  257.  
  258.     char-ci<?
  259.  
  260.  - Scheme Procedure: char-ci<? x y
  261.      Return `#t' iff X is less than Y in the ASCII sequence ignoring
  262.      case, else `#f'.
  263.  
  264.     char-ci<=?
  265.  
  266.  - Scheme Procedure: char-ci<=? x y
  267.      Return `#t' iff X is less than or equal to Y in the ASCII sequence
  268.      ignoring case, else `#f'.
  269.  
  270.     char-ci>?
  271.  
  272.  - Scheme Procedure: char-ci>? x y
  273.      Return `#t' iff X is greater than Y in the ASCII sequence ignoring
  274.      case, else `#f'.
  275.  
  276.     char-ci>=?
  277.  
  278.  - Scheme Procedure: char-ci>=? x y
  279.      Return `#t' iff X is greater than or equal to Y in the ASCII
  280.      sequence ignoring case, else `#f'.
  281.  
  282.     char-alphabetic?
  283.  
  284.  - Scheme Procedure: char-alphabetic? chr
  285.      Return `#t' iff CHR is alphabetic, else `#f'.  Alphabetic means
  286.      the same thing as the isalpha C library function.
  287.  
  288.     char-numeric?
  289.  
  290.  - Scheme Procedure: char-numeric? chr
  291.      Return `#t' iff CHR is numeric, else `#f'.  Numeric means the same
  292.      thing as the isdigit C library function.
  293.  
  294.     char-whitespace?
  295.  
  296.  - Scheme Procedure: char-whitespace? chr
  297.      Return `#t' iff CHR is whitespace, else `#f'.  Whitespace means
  298.      the same thing as the isspace C library function.
  299.  
  300.     char-upper-case?
  301.  
  302.  - Scheme Procedure: char-upper-case? chr
  303.      Return `#t' iff CHR is uppercase, else `#f'.  Uppercase means the
  304.      same thing as the isupper C library function.
  305.  
  306.     char-lower-case?
  307.  
  308.  - Scheme Procedure: char-lower-case? chr
  309.      Return `#t' iff CHR is lowercase, else `#f'.  Lowercase means the
  310.      same thing as the islower C library function.
  311.  
  312.     char-is-both?
  313.  
  314.  - Scheme Procedure: char-is-both? chr
  315.      Return `#t' iff CHR is either uppercase or lowercase, else `#f'.
  316.      Uppercase and lowercase are as defined by the isupper and islower
  317.      C library functions.
  318.  
  319.     char->integer
  320.  
  321.  - Scheme Procedure: char->integer chr
  322.      Return the number corresponding to ordinal position of CHR in the
  323.      ASCII sequence.
  324.  
  325.     integer->char
  326.  
  327.  - Scheme Procedure: integer->char n
  328.      Return the character at position N in the ASCII sequence.
  329.  
  330.     char-upcase
  331.  
  332.  - Scheme Procedure: char-upcase chr
  333.      Return the uppercase character version of CHR.
  334.  
  335.     char-downcase
  336.  
  337.  - Scheme Procedure: char-downcase chr
  338.      Return the lowercase character version of CHR.
  339.  
  340.     debug-options-interface
  341.  
  342.  - Scheme Procedure: debug-options-interface [setting]
  343.      Option interface for the debug options. Instead of using this
  344.      procedure directly, use the procedures `debug-enable',
  345.      `debug-disable', `debug-set!' and `debug-options'.
  346.  
  347.     with-traps
  348.  
  349.  - Scheme Procedure: with-traps thunk
  350.      Call THUNK with traps enabled.
  351.  
  352.     memoized?
  353.  
  354.  - Scheme Procedure: memoized? obj
  355.      Return `#t' if OBJ is memoized.
  356.  
  357.     unmemoize
  358.  
  359.  - Scheme Procedure: unmemoize m
  360.      Unmemoize the memoized expression M,
  361.  
  362.     memoized-environment
  363.  
  364.  - Scheme Procedure: memoized-environment m
  365.      Return the environment of the memoized expression M.
  366.  
  367.     procedure-name
  368.  
  369.  - Scheme Procedure: procedure-name proc
  370.      Return the name of the procedure PROC
  371.  
  372.     procedure-source
  373.  
  374.  - Scheme Procedure: procedure-source proc
  375.      Return the source of the procedure PROC.
  376.  
  377.     procedure-environment
  378.  
  379.  - Scheme Procedure: procedure-environment proc
  380.      Return the environment of the procedure PROC.
  381.  
  382.     local-eval
  383.  
  384.  - Scheme Procedure: local-eval exp [env]
  385.      Evaluate EXP in its environment.  If ENV is supplied, it is the
  386.      environment in which to evaluate EXP.  Otherwise, EXP must be a
  387.      memoized code object (in which case, its environment is implicit).
  388.  
  389.     debug-object?
  390.  
  391.  - Scheme Procedure: debug-object? obj
  392.      Return `#t' if OBJ is a debug object.
  393.  
  394.     c-registered-modules
  395.  
  396.  - Scheme Procedure: c-registered-modules
  397.      Return a list of the object code modules that have been imported
  398.      into the current Guile process.  Each element of the list is a
  399.      pair whose car is the name of the module, and whose cdr is the
  400.      function handle for that module's initializer function.  The name
  401.      is the string that has been passed to scm_register_module_xxx.
  402.  
  403.     c-clear-registered-modules
  404.  
  405.  - Scheme Procedure: c-clear-registered-modules
  406.      Destroy the list of modules registered with the current Guile
  407.      process.  The return value is unspecified.  *Warning:* this
  408.      function does not actually unlink or deallocate these modules, but
  409.      only destroys the records of which modules have been loaded.  It
  410.      should therefore be used only by module bookkeeping operations.
  411.  
  412.     dynamic-link
  413.  
  414.  - Scheme Procedure: dynamic-link filename
  415.      Open the dynamic library called FILENAME.  A library handle
  416.      representing the opened library is returned; this handle should be
  417.      used as the DOBJ argument to the following functions.
  418.  
  419.     dynamic-object?
  420.  
  421.  - Scheme Procedure: dynamic-object? obj
  422.      Return `#t' if OBJ is a dynamic library handle, or `#f' otherwise.
  423.  
  424.     dynamic-unlink
  425.  
  426.  - Scheme Procedure: dynamic-unlink dobj
  427.      Unlink the indicated object file from the application.  The
  428.      argument DOBJ must have been obtained by a call to `dynamic-link'.
  429.      After `dynamic-unlink' has been called on DOBJ, its content is no
  430.      longer accessible.
  431.  
  432.     dynamic-func
  433.  
  434.  - Scheme Procedure: dynamic-func name dobj
  435.      Search the dynamic object DOBJ for the C function indicated by the
  436.      string NAME and return some Scheme handle that can later be used
  437.      with `dynamic-call' to actually call the function.
  438.  
  439.      Regardless whether your C compiler prepends an underscore `_' to
  440.      the global names in a program, you should *not* include this
  441.      underscore in FUNCTION.  Guile knows whether the underscore is
  442.      needed or not and will add it when necessary.
  443.  
  444.     dynamic-call
  445.  
  446.  - Scheme Procedure: dynamic-call func dobj
  447.      Call the C function indicated by FUNC and DOBJ.  The function is
  448.      passed no arguments and its return value is ignored.  When
  449.      FUNCTION is something returned by `dynamic-func', call that
  450.      function and ignore DOBJ.  When FUNC is a string , look it up in
  451.      DYNOBJ; this is equivalent to
  452.           (dynamic-call (dynamic-func FUNC DOBJ #f))
  453.  
  454.      Interrupts are deferred while the C function is executing (with
  455.      `SCM_DEFER_INTS'/`SCM_ALLOW_INTS').
  456.  
  457.     dynamic-args-call
  458.  
  459.  - Scheme Procedure: dynamic-args-call func dobj args
  460.      Call the C function indicated by FUNC and DOBJ, just like
  461.      `dynamic-call', but pass it some arguments and return its return
  462.      value.  The C function is expected to take two arguments and
  463.      return an `int', just like `main':
  464.           int c_func (int argc, char **argv);
  465.  
  466.      The parameter ARGS must be a list of strings and is converted into
  467.      an array of `char *'.  The array is passed in ARGV and its size in
  468.      ARGC.  The return value is converted to a Scheme number and
  469.      returned from the call to `dynamic-args-call'.
  470.  
  471.     dynamic-wind
  472.  
  473.  - Scheme Procedure: dynamic-wind in_guard thunk out_guard
  474.      All three arguments must be 0-argument procedures.  IN_GUARD is
  475.      called, then THUNK, then OUT_GUARD.
  476.  
  477.      If, any time during the execution of THUNK, the continuation of
  478.      the `dynamic_wind' expression is escaped non-locally, OUT_GUARD is
  479.      called.  If the continuation of the dynamic-wind is re-entered,
  480.      IN_GUARD is called.  Thus IN_GUARD and OUT_GUARD may be called any
  481.      number of times.
  482.           (define x 'normal-binding)
  483.           => x
  484.           (define a-cont  (call-with-current-continuation
  485.                     (lambda (escape)
  486.                        (let ((old-x x))
  487.                          (dynamic-wind
  488.                         ;; in-guard:
  489.                         ;;
  490.                         (lambda () (set! x 'special-binding))
  491.           
  492.                         ;; thunk
  493.                         ;;
  494.                          (lambda () (display x) (newline)
  495.                                (call-with-current-continuation escape)
  496.                                (display x) (newline)
  497.                                x)
  498.           
  499.                         ;; out-guard:
  500.                         ;;
  501.                         (lambda () (set! x old-x)))))))
  502.           
  503.           ;; Prints:
  504.           special-binding
  505.           ;; Evaluates to:
  506.           => a-cont
  507.           x
  508.           => normal-binding
  509.           (a-cont #f)
  510.           ;; Prints:
  511.           special-binding
  512.           ;; Evaluates to:
  513.           => a-cont  ;; the value of the (define a-cont...)
  514.           x
  515.           => normal-binding
  516.           a-cont
  517.           => special-binding
  518.  
  519.     environment?
  520.  
  521.  - Scheme Procedure: environment? obj
  522.      Return `#t' if OBJ is an environment, or `#f' otherwise.
  523.  
  524.     environment-bound?
  525.  
  526.  - Scheme Procedure: environment-bound? env sym
  527.      Return `#t' if SYM is bound in ENV, or `#f' otherwise.
  528.  
  529.     environment-ref
  530.  
  531.  - Scheme Procedure: environment-ref env sym
  532.      Return the value of the location bound to SYM in ENV. If SYM is
  533.      unbound in ENV, signal an `environment:unbound' error.
  534.  
  535.     environment-fold
  536.  
  537.  - Scheme Procedure: environment-fold env proc init
  538.      Iterate over all the bindings in ENV, accumulating some value.
  539.      For each binding in ENV, apply PROC to the symbol bound, its
  540.      value, and the result from the previous application of PROC.  Use
  541.      INIT as PROC's third argument the first time PROC is applied.  If
  542.      ENV contains no bindings, this function simply returns INIT.  If
  543.      ENV binds the symbol sym1 to the value val1, sym2 to val2, and so
  544.      on, then this procedure computes:
  545.             (proc sym1 val1
  546.                   (proc sym2 val2
  547.                         ...
  548.                         (proc symn valn
  549.                               init)))
  550.      Each binding in ENV will be processed exactly once.
  551.      `environment-fold' makes no guarantees about the order in which
  552.      the bindings are processed.  Here is a function which, given an
  553.      environment, constructs an association list representing that
  554.      environment's bindings, using environment-fold:
  555.             (define (environment->alist env)
  556.               (environment-fold env
  557.                                 (lambda (sym val tail)
  558.                                   (cons (cons sym val) tail))
  559.                                 '()))
  560.  
  561.     environment-define
  562.  
  563.  - Scheme Procedure: environment-define env sym val
  564.      Bind SYM to a new location containing VAL in ENV. If SYM is
  565.      already bound to another location in ENV and the binding is
  566.      mutable, that binding is replaced.  The new binding and location
  567.      are both mutable. The return value is unspecified.  If SYM is
  568.      already bound in ENV, and the binding is immutable, signal an
  569.      `environment:immutable-binding' error.
  570.  
  571.     environment-undefine
  572.  
  573.  - Scheme Procedure: environment-undefine env sym
  574.      Remove any binding for SYM from ENV. If SYM is unbound in ENV, do
  575.      nothing.  The return value is unspecified.  If SYM is already
  576.      bound in ENV, and the binding is immutable, signal an
  577.      `environment:immutable-binding' error.
  578.  
  579.     environment-set!
  580.  
  581.  - Scheme Procedure: environment-set! env sym val
  582.      If ENV binds SYM to some location, change that location's value to
  583.      VAL.  The return value is unspecified.  If SYM is not bound in
  584.      ENV, signal an `environment:unbound' error.  If ENV binds SYM to
  585.      an immutable location, signal an `environment:immutable-location'
  586.      error.
  587.  
  588.     environment-cell
  589.  
  590.  - Scheme Procedure: environment-cell env sym for_write
  591.      Return the value cell which ENV binds to SYM, or `#f' if the
  592.      binding does not live in a value cell.  The argument FOR-WRITE
  593.      indicates whether the caller intends to modify the variable's
  594.      value by mutating the value cell.  If the variable is immutable,
  595.      then `environment-cell' signals an
  596.      `environment:immutable-location' error.  If SYM is unbound in ENV,
  597.      signal an `environment:unbound' error.  If you use this function,
  598.      you should consider using `environment-observe', to be notified
  599.      when SYM gets re-bound to a new value cell, or becomes undefined.
  600.  
  601.     environment-observe
  602.  
  603.  - Scheme Procedure: environment-observe env proc
  604.      Whenever ENV's bindings change, apply PROC to ENV.  This function
  605.      returns an object, token, which you can pass to
  606.      `environment-unobserve' to remove PROC from the set of procedures
  607.      observing ENV.  The type and value of token is unspecified.
  608.  
  609.     environment-observe-weak
  610.  
  611.  - Scheme Procedure: environment-observe-weak env proc
  612.      This function is the same as environment-observe, except that the
  613.      reference ENV retains to PROC is a weak reference. This means
  614.      that, if there are no other live, non-weak references to PROC, it
  615.      will be garbage-collected, and dropped from ENV's list of
  616.      observing procedures.
  617.  
  618.     environment-unobserve
  619.  
  620.  - Scheme Procedure: environment-unobserve token
  621.      Cancel the observation request which returned the value TOKEN.
  622.      The return value is unspecified.  If a call `(environment-observe
  623.      env proc)' returns TOKEN, then the call `(environment-unobserve
  624.      token)' will cause PROC to no longer be called when ENV's bindings
  625.      change.
  626.  
  627.     make-leaf-environment
  628.  
  629.  - Scheme Procedure: make-leaf-environment
  630.      Create a new leaf environment, containing no bindings.  All
  631.      bindings and locations created in the new environment will be
  632.      mutable.
  633.  
  634.     leaf-environment?
  635.  
  636.  - Scheme Procedure: leaf-environment? object
  637.      Return `#t' if object is a leaf environment, or `#f' otherwise.
  638.  
  639.     make-eval-environment
  640.  
  641.  - Scheme Procedure: make-eval-environment local imported
  642.      Return a new environment object eval whose bindings are the union
  643.      of the bindings in the environments LOCAL and IMPORTED, with
  644.      bindings from LOCAL taking precedence. Definitions made in eval
  645.      are placed in LOCAL.  Applying `environment-define' or
  646.      `environment-undefine' to eval has the same effect as applying the
  647.      procedure to LOCAL.  Note that eval incorporates LOCAL and
  648.      IMPORTED by reference: If, after creating eval, the program
  649.      changes the bindings of LOCAL or IMPORTED, those changes will be
  650.      visible in eval.  Since most Scheme evaluation takes place in eval
  651.      environments, they transparently cache the bindings received from
  652.      LOCAL and IMPORTED. Thus, the first time the program looks up a
  653.      symbol in eval, eval may make calls to LOCAL or IMPORTED to find
  654.      their bindings, but subsequent references to that symbol will be
  655.      as fast as references to bindings in finite environments.  In
  656.      typical use, LOCAL will be a finite environment, and IMPORTED will
  657.      be an import environment
  658.  
  659.     eval-environment?
  660.  
  661.  - Scheme Procedure: eval-environment? object
  662.      Return `#t' if object is an eval environment, or `#f' otherwise.
  663.  
  664.     eval-environment-local
  665.  
  666.  - Scheme Procedure: eval-environment-local env
  667.      Return the local environment of eval environment ENV.
  668.  
  669.     eval-environment-set-local!
  670.  
  671.  - Scheme Procedure: eval-environment-set-local! env local
  672.      Change ENV's local environment to LOCAL.
  673.  
  674.     eval-environment-imported
  675.  
  676.  - Scheme Procedure: eval-environment-imported env
  677.      Return the imported environment of eval environment ENV.
  678.  
  679.     eval-environment-set-imported!
  680.  
  681.  - Scheme Procedure: eval-environment-set-imported! env imported
  682.      Change ENV's imported environment to IMPORTED.
  683.  
  684.     make-import-environment
  685.  
  686.  - Scheme Procedure: make-import-environment imports conflict_proc
  687.      Return a new environment IMP whose bindings are the union of the
  688.      bindings from the environments in IMPORTS; IMPORTS must be a list
  689.      of environments. That is, IMP binds a symbol to a location when
  690.      some element of IMPORTS does.  If two different elements of
  691.      IMPORTS have a binding for the same symbol, the CONFLICT-PROC is
  692.      called with the following parameters:  the import environment, the
  693.      symbol and the list of the imported environments that bind the
  694.      symbol.  If the CONFLICT-PROC returns an environment ENV, the
  695.      conflict is considered as resolved and the binding from ENV is
  696.      used.  If the CONFLICT-PROC returns some non-environment object,
  697.      the conflict is considered unresolved and the symbol is treated as
  698.      unspecified in the import environment.  The checking for conflicts
  699.      may be performed lazily, i. e. at the moment when a value or
  700.      binding for a certain symbol is requested instead of the moment
  701.      when the environment is created or the bindings of the imports
  702.      change.  All bindings in IMP are immutable. If you apply
  703.      `environment-define' or `environment-undefine' to IMP, Guile will
  704.      signal an  `environment:immutable-binding' error. However, notice
  705.      that the set of bindings in IMP may still change, if one of its
  706.      imported environments changes.
  707.  
  708.     import-environment?
  709.  
  710.  - Scheme Procedure: import-environment? object
  711.      Return `#t' if object is an import environment, or `#f' otherwise.
  712.  
  713.     import-environment-imports
  714.  
  715.  - Scheme Procedure: import-environment-imports env
  716.      Return the list of environments imported by the import environment
  717.      ENV.
  718.  
  719.     import-environment-set-imports!
  720.  
  721.  - Scheme Procedure: import-environment-set-imports! env imports
  722.      Change ENV's list of imported environments to IMPORTS, and check
  723.      for conflicts.
  724.  
  725.     make-export-environment
  726.  
  727.  - Scheme Procedure: make-export-environment private signature
  728.      Return a new environment EXP containing only those bindings in
  729.      private whose symbols are present in SIGNATURE. The PRIVATE
  730.      argument must be an environment.
  731.  
  732.      The environment EXP binds symbol to location when ENV does, and
  733.      symbol is exported by SIGNATURE.
  734.  
  735.      SIGNATURE is a list specifying which of the bindings in PRIVATE
  736.      should be visible in EXP. Each element of SIGNATURE should be a
  737.      list of the form:   (symbol attribute ...)  where each attribute
  738.      is one of the following:
  739.     the symbol `mutable-location'
  740.           EXP should treat the   location bound to symbol as mutable.
  741.           That is, EXP   will pass calls to `environment-set!' or
  742.           `environment-cell' directly through to private.
  743.  
  744.     the symbol `immutable-location'
  745.           EXP should treat   the location bound to symbol as immutable.
  746.           If the program   applies `environment-set!' to EXP and
  747.           symbol, or   calls `environment-cell' to obtain a writable
  748.           value   cell, `environment-set!' will signal an
  749.           `environment:immutable-location' error. Note that, even   if
  750.           an export environment treats a location as immutable, the
  751.           underlying environment may treat it as mutable, so its
  752.           value may change.  It is an error for an element of signature
  753.      to specify both `mutable-location' and `immutable-location'. If
  754.      neither is specified, `immutable-location' is assumed.
  755.  
  756.      As a special case, if an element of signature is a lone symbol
  757.      SYM, it is equivalent to an element of the form `(sym)'.
  758.  
  759.      All bindings in EXP are immutable. If you apply
  760.      `environment-define' or `environment-undefine' to EXP, Guile will
  761.      signal an `environment:immutable-binding' error. However, notice
  762.      that the set of bindings in EXP may still change, if the bindings
  763.      in private change.
  764.  
  765.     export-environment?
  766.  
  767.  - Scheme Procedure: export-environment? object
  768.      Return `#t' if object is an export environment, or `#f' otherwise.
  769.  
  770.     export-environment-private
  771.  
  772.  - Scheme Procedure: export-environment-private env
  773.      Return the private environment of export environment ENV.
  774.  
  775.     export-environment-set-private!
  776.  
  777.  - Scheme Procedure: export-environment-set-private! env private
  778.      Change the private environment of export environment ENV.
  779.  
  780.     export-environment-signature
  781.  
  782.  - Scheme Procedure: export-environment-signature env
  783.      Return the signature of export environment ENV.
  784.  
  785.     export-environment-set-signature!
  786.  
  787.  - Scheme Procedure: export-environment-set-signature! env signature
  788.      Change the signature of export environment ENV.
  789.  
  790.     eq?
  791.  
  792.  - Scheme Procedure: eq? x y
  793.      Return `#t' iff X references the same object as Y.  `eq?' is
  794.      similar to `eqv?' except that in some cases it is capable of
  795.      discerning distinctions finer than those detectable by `eqv?'.
  796.  
  797.     eqv?
  798.  
  799.  - Scheme Procedure: eqv? x y
  800.      The `eqv?' procedure defines a useful equivalence relation on
  801.      objects.  Briefly, it returns `#t' if X and Y should normally be
  802.      regarded as the same object.  This relation is left slightly open
  803.      to interpretation, but works for comparing immediate integers,
  804.      characters, and inexact numbers.
  805.  
  806.     equal?
  807.  
  808.  - Scheme Procedure: equal? x y
  809.      Return `#t' iff X and Y are recursively `eqv?' equivalent.
  810.      `equal?' recursively compares the contents of pairs, vectors, and
  811.      strings, applying `eqv?' on other objects such as numbers and
  812.      symbols.  A rule of thumb is that objects are generally `equal?'
  813.      if they print the same.  `equal?' may fail to terminate if its
  814.      arguments are circular data structures.
  815.  
  816.     scm-error
  817.  
  818.  - Scheme Procedure: scm-error key subr message args data
  819.      Raise an error with key KEY.  SUBR can be a string naming the
  820.      procedure associated with the error, or `#f'.  MESSAGE is the
  821.      error message string, possibly containing `~S' and `~A' escapes.
  822.      When an error is reported, these are replaced by formatting the
  823.      corresponding members of ARGS: `~A' (was `%s' in older versions of
  824.      Guile) formats using `display' and `~S' (was `%S') formats using
  825.      `write'.  DATA is a list or `#f' depending on KEY: if KEY is
  826.      `system-error' then it should be a list containing the Unix
  827.      `errno' value; If KEY is `signal' then it should be a list
  828.      containing the Unix signal number; otherwise it will usually be
  829.      `#f'.
  830.  
  831.     strerror
  832.  
  833.  - Scheme Procedure: strerror err
  834.      Return the Unix error message corresponding to ERR, which must be
  835.      an integer value.
  836.  
  837.     apply:nconc2last
  838.  
  839.  - Scheme Procedure: apply:nconc2last lst
  840.      Given a list (ARG1 ... ARGS), this function conses the ARG1 ...
  841.      arguments onto the front of ARGS, and returns the resulting list.
  842.      Note that ARGS is a list; thus, the argument to this function is a
  843.      list whose last element is a list.  Note: Rather than do new
  844.      consing, `apply:nconc2last' destroys its argument, so use with
  845.      care.
  846.  
  847.     force
  848.  
  849.  - Scheme Procedure: force x
  850.      If the promise X has not been computed yet, compute and return X,
  851.      otherwise just return the previously computed value.
  852.  
  853.     promise?
  854.  
  855.  - Scheme Procedure: promise? obj
  856.      Return true if OBJ is a promise, i.e. a delayed computation (*note
  857.      Delayed evaluation: (r5rs.info)Delayed evaluation.).
  858.  
  859.     cons-source
  860.  
  861.  - Scheme Procedure: cons-source xorig x y
  862.      Create and return a new pair whose car and cdr are X and Y.  Any
  863.      source properties associated with XORIG are also associated with
  864.      the new pair.
  865.  
  866.     copy-tree
  867.  
  868.  - Scheme Procedure: copy-tree obj
  869.      Recursively copy the data tree that is bound to OBJ, and return a
  870.      pointer to the new data structure.  `copy-tree' recurses down the
  871.      contents of both pairs and vectors (since both cons cells and
  872.      vector cells may point to arbitrary objects), and stops recursing
  873.      when it hits any other object.
  874.  
  875.     primitive-eval
  876.  
  877.  - Scheme Procedure: primitive-eval exp
  878.      Evaluate EXP in the top-level environment specified by the current
  879.      module.
  880.  
  881.     eval
  882.  
  883.  - Scheme Procedure: eval exp module
  884.      Evaluate EXP, a list representing a Scheme expression, in the
  885.      top-level environment specified by MODULE.  While EXP is evaluated
  886.      (using `primitive-eval'), MODULE is made the current module.  The
  887.      current module is reset to its previous value when EVAL returns.
  888.  
  889.     eval2
  890.  
  891.  - Scheme Procedure: eval2 obj env_thunk
  892.      Evaluate EXP, a Scheme expression, in the environment designated
  893.      by LOOKUP, a symbol-lookup function.  Do not use this version of
  894.      eval, it does not play well with the module system.  Use `eval' or
  895.      `primitive-eval' instead.
  896.  
  897.     eval-options-interface
  898.  
  899.  - Scheme Procedure: eval-options-interface [setting]
  900.      Option interface for the evaluation options. Instead of using this
  901.      procedure directly, use the procedures `eval-enable',
  902.      `eval-disable', `eval-set!' and `eval-options'.
  903.  
  904.     evaluator-traps-interface
  905.  
  906.  - Scheme Procedure: evaluator-traps-interface [setting]
  907.      Option interface for the evaluator trap options.
  908.  
  909.     defined?
  910.  
  911.  - Scheme Procedure: defined? sym [env]
  912.      Return `#t' if SYM is defined in the lexical environment ENV.
  913.      When ENV is not specified, look in the top-level environment as
  914.      defined by the current module.
  915.  
  916.     map-in-order
  917.  
  918.  - Scheme Procedure: map-in-order
  919.      implemented by the C function "scm_map"
  920.  
  921.     load-extension
  922.  
  923.  - Scheme Procedure: load-extension lib init
  924.      Load and initialize the extension designated by LIB and INIT.
  925.      When there is no pre-registered function for LIB/INIT, this is
  926.      equivalent to
  927.  
  928.           (dynamic-call INIT (dynamic-link LIB))
  929.  
  930.      When there is a pre-registered function, that function is called
  931.      instead.
  932.  
  933.      Normally, there is no pre-registered function.  This option exists
  934.      only for situations where dynamic linking is unavailable or
  935.      unwanted.  In that case, you would statically link your program
  936.      with the desired library, and register its init function right
  937.      after Guile has been initialized.
  938.  
  939.      LIB should be a string denoting a shared library without any file
  940.      type suffix such as ".so".  The suffix is provided automatically.
  941.      It should also not contain any directory components.  Libraries
  942.      that implement Guile Extensions should be put into the normal
  943.      locations for shared libraries.  We recommend to use the naming
  944.      convention libguile-bla-blum for a extension related to a module
  945.      `(bla blum)'.
  946.  
  947.      The normal way for a extension to be used is to write a small
  948.      Scheme file that defines a module, and to load the extension into
  949.      this module.  When the module is auto-loaded, the extension is
  950.      loaded as well.  For example,
  951.  
  952.           (define-module (bla blum))
  953.           
  954.           (load-extension "libguile-bla-blum" "bla_init_blum")
  955.  
  956.     program-arguments
  957.  
  958.  - Scheme Procedure: program-arguments
  959.  - Scheme Procedure: command-line
  960.      Return the list of command line arguments passed to Guile, as a
  961.      list of strings.  The list includes the invoked program name,
  962.      which is usually `"guile"', but excludes switches and parameters
  963.      for command line options like `-e' and `-l'.
  964.  
  965.     make-fluid
  966.  
  967.  - Scheme Procedure: make-fluid
  968.      Return a newly created fluid.  Fluids are objects of a certain
  969.      type (a smob) that can hold one SCM value per dynamic root.  That
  970.      is, modifications to this value are only visible to code that
  971.      executes within the same dynamic root as the modifying code.  When
  972.      a new dynamic root is constructed, it inherits the values from its
  973.      parent.  Because each thread executes in its own dynamic root, you
  974.      can use fluids for thread local storage.
  975.  
  976.     fluid?
  977.  
  978.  - Scheme Procedure: fluid? obj
  979.      Return `#t' iff OBJ is a fluid; otherwise, return `#f'.
  980.  
  981.     fluid-ref
  982.  
  983.  - Scheme Procedure: fluid-ref fluid
  984.      Return the value associated with FLUID in the current dynamic
  985.      root.  If FLUID has not been set, then return `#f'.
  986.  
  987.     fluid-set!
  988.  
  989.  - Scheme Procedure: fluid-set! fluid value
  990.      Set the value associated with FLUID in the current dynamic root.
  991.  
  992.     with-fluids*
  993.  
  994.  - Scheme Procedure: with-fluids* fluids values thunk
  995.      Set FLUIDS to VALUES temporary, and call THUNK.  FLUIDS must be a
  996.      list of fluids and VALUES must be the same number of their values
  997.      to be applied.  Each substitution is done one after another.
  998.      THUNK must be a procedure with no argument.
  999.  
  1000.     setvbuf
  1001.  
  1002.  - Scheme Procedure: setvbuf port mode [size]
  1003.      Set the buffering mode for PORT.  MODE can be:
  1004.     `_IONBF'
  1005.           non-buffered
  1006.  
  1007.     `_IOLBF'
  1008.           line buffered
  1009.  
  1010.     `_IOFBF'
  1011.           block buffered, using a newly allocated buffer of SIZE bytes.
  1012.           If SIZE is omitted, a default size will be used.
  1013.  
  1014.     file-port?
  1015.  
  1016.  - Scheme Procedure: file-port? obj
  1017.      Determine whether OBJ is a port that is related to a file.
  1018.  
  1019.     open-file
  1020.  
  1021.  - Scheme Procedure: open-file filename mode
  1022.      Open the file whose name is FILENAME, and return a port
  1023.      representing that file.  The attributes of the port are determined
  1024.      by the MODE string.  The way in which this is interpreted is
  1025.      similar to C stdio.  The first character must be one of the
  1026.      following:
  1027.     `r'
  1028.           Open an existing file for input.
  1029.  
  1030.     `w'
  1031.           Open a file for output, creating it if it doesn't already
  1032.           exist or removing its contents if it does.
  1033.  
  1034.     `a'
  1035.           Open a file for output, creating it if it doesn't already
  1036.           exist.  All writes to the port will go to the end of the file.
  1037.           The "append mode" can be turned off while the port is in use
  1038.           *note fcntl: Ports and File Descriptors.  The following
  1039.      additional characters can be appended:
  1040.     `+'
  1041.           Open the port for both input and output.  E.g., `r+': open an
  1042.           existing file for both input and output.
  1043.  
  1044.     `0'
  1045.           Create an "unbuffered" port.  In this case input and output
  1046.           operations are passed directly to the underlying port
  1047.           implementation without additional buffering.  This is likely
  1048.           to slow down I/O operations.  The buffering mode can be
  1049.           changed while a port is in use *note setvbuf: Ports and File
  1050.           Descriptors.
  1051.  
  1052.     `l'
  1053.           Add line-buffering to the port.  The port output buffer will
  1054.           be automatically flushed whenever a newline character is
  1055.           written.  In theory we could create read/write ports which
  1056.      were buffered in one direction only.  However this isn't included
  1057.      in the current interfaces.  If a file cannot be opened with the
  1058.      access requested, `open-file' throws an exception.
  1059.  
  1060.     gc-stats
  1061.  
  1062.  - Scheme Procedure: gc-stats
  1063.      Return an association list of statistics about Guile's current use
  1064.      of storage.
  1065.  
  1066.     object-address
  1067.  
  1068.  - Scheme Procedure: object-address obj
  1069.      Return an integer that for the lifetime of OBJ is uniquely
  1070.      returned by this function for OBJ
  1071.  
  1072.     gc
  1073.  
  1074.  - Scheme Procedure: gc
  1075.      Scans all of SCM objects and reclaims for further use those that
  1076.      are no longer accessible.
  1077.  
  1078.     %compute-slots
  1079.  
  1080.  - Scheme Procedure: %compute-slots class
  1081.      Return a list consisting of the names of all slots belonging to
  1082.      class CLASS, i. e. the slots of CLASS and of all of its
  1083.      superclasses.
  1084.  
  1085.     get-keyword
  1086.  
  1087.  - Scheme Procedure: get-keyword key l default_value
  1088.      Determine an associated value for the keyword KEY from the list L.
  1089.      The list L has to consist of an even number of elements, where,
  1090.      starting with the first, every second element is a keyword,
  1091.      followed by its associated value.  If L does not hold a value for
  1092.      KEY, the value DEFAULT_VALUE is returned.
  1093.  
  1094.     %initialize-object
  1095.  
  1096.  - Scheme Procedure: %initialize-object obj initargs
  1097.      Initialize the object OBJ with the given arguments INITARGS.
  1098.  
  1099.     %prep-layout!
  1100.  
  1101.  - Scheme Procedure: %prep-layout! class
  1102.  
  1103.     %inherit-magic!
  1104.  
  1105.  - Scheme Procedure: %inherit-magic! class dsupers
  1106.  
  1107.     instance?
  1108.  
  1109.  - Scheme Procedure: instance? obj
  1110.      Return `#t' if OBJ is an instance.
  1111.  
  1112.     class-name
  1113.  
  1114.  - Scheme Procedure: class-name obj
  1115.      Return the class name of OBJ.
  1116.  
  1117.     class-direct-supers
  1118.  
  1119.  - Scheme Procedure: class-direct-supers obj
  1120.      Return the direct superclasses of the class OBJ.
  1121.  
  1122.     class-direct-slots
  1123.  
  1124.  - Scheme Procedure: class-direct-slots obj
  1125.      Return the direct slots of the class OBJ.
  1126.  
  1127.     class-direct-subclasses
  1128.  
  1129.  - Scheme Procedure: class-direct-subclasses obj
  1130.      Return the direct subclasses of the class OBJ.
  1131.  
  1132.     class-direct-methods
  1133.  
  1134.  - Scheme Procedure: class-direct-methods obj
  1135.      Return the direct methods of the class OBJ
  1136.  
  1137.     class-precedence-list
  1138.  
  1139.  - Scheme Procedure: class-precedence-list obj
  1140.      Return the class precedence list of the class OBJ.
  1141.  
  1142.     class-slots
  1143.  
  1144.  - Scheme Procedure: class-slots obj
  1145.      Return the slot list of the class OBJ.
  1146.  
  1147.     class-environment
  1148.  
  1149.  - Scheme Procedure: class-environment obj
  1150.      Return the environment of the class OBJ.
  1151.  
  1152.     generic-function-name
  1153.  
  1154.  - Scheme Procedure: generic-function-name obj
  1155.      Return the name of the generic function OBJ.
  1156.  
  1157.     generic-function-methods
  1158.  
  1159.  - Scheme Procedure: generic-function-methods obj
  1160.      Return the methods of the generic function OBJ.
  1161.  
  1162.     method-generic-function
  1163.  
  1164.  - Scheme Procedure: method-generic-function obj
  1165.      Return the generic function for the method OBJ.
  1166.  
  1167.     method-specializers
  1168.  
  1169.  - Scheme Procedure: method-specializers obj
  1170.      Return specializers of the method OBJ.
  1171.  
  1172.     method-procedure
  1173.  
  1174.  - Scheme Procedure: method-procedure obj
  1175.      Return the procedure of the method OBJ.
  1176.  
  1177.     accessor-method-slot-definition
  1178.  
  1179.  - Scheme Procedure: accessor-method-slot-definition obj
  1180.      Return the slot definition of the accessor OBJ.
  1181.  
  1182.     %tag-body
  1183.  
  1184.  - Scheme Procedure: %tag-body body
  1185.      Internal GOOPS magic--don't use this function!
  1186.  
  1187.     make-unbound
  1188.  
  1189.  - Scheme Procedure: make-unbound
  1190.      Return the unbound value.
  1191.  
  1192.     unbound?
  1193.  
  1194.  - Scheme Procedure: unbound? obj
  1195.      Return `#t' if OBJ is unbound.
  1196.  
  1197.     assert-bound
  1198.  
  1199.  - Scheme Procedure: assert-bound value obj
  1200.      Return VALUE if it is bound, and invoke the SLOT-UNBOUND method of
  1201.      OBJ if it is not.
  1202.  
  1203.     @assert-bound-ref
  1204.  
  1205.  - Scheme Procedure: @assert-bound-ref obj index
  1206.      Like `assert-bound', but use INDEX for accessing the value from
  1207.      OBJ.
  1208.  
  1209.     %fast-slot-ref
  1210.  
  1211.  - Scheme Procedure: %fast-slot-ref obj index
  1212.      Return the slot value with index INDEX from OBJ.
  1213.  
  1214.     %fast-slot-set!
  1215.  
  1216.  - Scheme Procedure: %fast-slot-set! obj index value
  1217.      Set the slot with index INDEX in OBJ to VALUE.
  1218.  
  1219.     slot-ref-using-class
  1220.  
  1221.  - Scheme Procedure: slot-ref-using-class class obj slot_name
  1222.  
  1223.     slot-set-using-class!
  1224.  
  1225.  - Scheme Procedure: slot-set-using-class! class obj slot_name value
  1226.  
  1227.     slot-bound-using-class?
  1228.  
  1229.  - Scheme Procedure: slot-bound-using-class? class obj slot_name
  1230.  
  1231.     slot-exists-using-class?
  1232.  
  1233.  - Scheme Procedure: slot-exists-using-class? class obj slot_name
  1234.  
  1235.     slot-ref
  1236.  
  1237.  - Scheme Procedure: slot-ref obj slot_name
  1238.      Return the value from OBJ's slot with the name SLOT_NAME.
  1239.  
  1240.     slot-set!
  1241.  
  1242.  - Scheme Procedure: slot-set! obj slot_name value
  1243.      Set the slot named SLOT_NAME of OBJ to VALUE.
  1244.  
  1245.     slot-bound?
  1246.  
  1247.  - Scheme Procedure: slot-bound? obj slot_name
  1248.      Return `#t' if the slot named SLOT_NAME of OBJ is bound.
  1249.  
  1250.     slot-exists?
  1251.  
  1252.  - Scheme Procedure: slot-exists? obj slot_name
  1253.      Return `#t' if OBJ has a slot named SLOT_NAME.
  1254.  
  1255.     %allocate-instance
  1256.  
  1257.  - Scheme Procedure: %allocate-instance class initargs
  1258.      Create a new instance of class CLASS and initialize it from the
  1259.      arguments INITARGS.
  1260.  
  1261.     %set-object-setter!
  1262.  
  1263.  - Scheme Procedure: %set-object-setter! obj setter
  1264.  
  1265.     %modify-instance
  1266.  
  1267.  - Scheme Procedure: %modify-instance old new
  1268.  
  1269.     %modify-class
  1270.  
  1271.  - Scheme Procedure: %modify-class old new
  1272.  
  1273.     %invalidate-class
  1274.  
  1275.  - Scheme Procedure: %invalidate-class class
  1276.  
  1277.     %invalidate-method-cache!
  1278.  
  1279.  - Scheme Procedure: %invalidate-method-cache! gf
  1280.  
  1281.     generic-capability?
  1282.  
  1283.  - Scheme Procedure: generic-capability? proc
  1284.  
  1285.     enable-primitive-generic!
  1286.  
  1287.  - Scheme Procedure: enable-primitive-generic! . subrs
  1288.  
  1289.     primitive-generic-generic
  1290.  
  1291.  - Scheme Procedure: primitive-generic-generic subr
  1292.  
  1293.     make
  1294.  
  1295.  - Scheme Procedure: make . args
  1296.      Make a new object.  ARGS must contain the class and all necessary
  1297.      initialization information.
  1298.  
  1299.     find-method
  1300.  
  1301.  - Scheme Procedure: find-method . l
  1302.  
  1303.     %method-more-specific?
  1304.  
  1305.  - Scheme Procedure: %method-more-specific? m1 m2 targs
  1306.  
  1307.     %goops-loaded
  1308.  
  1309.  - Scheme Procedure: %goops-loaded
  1310.      Announce that GOOPS is loaded and perform initialization on the C
  1311.      level which depends on the loaded GOOPS modules.
  1312.  
  1313.     make-guardian
  1314.  
  1315.  - Scheme Procedure: make-guardian [greedy_p]
  1316.      Create a new guardian.  A guardian protects a set of objects from
  1317.      garbage collection, allowing a program to apply cleanup or other
  1318.      actions.
  1319.  
  1320.      `make-guardian' returns a procedure representing the guardian.
  1321.      Calling the guardian procedure with an argument adds the argument
  1322.      to the guardian's set of protected objects.  Calling the guardian
  1323.      procedure without an argument returns one of the protected objects
  1324.      which are ready for garbage collection, or `#f' if no such object
  1325.      is available.  Objects which are returned in this way are removed
  1326.      from the guardian.
  1327.  
  1328.      `make-guardian' takes one optional argument that says whether the
  1329.      new guardian should be greedy or sharing.  If there is any chance
  1330.      that any object protected by the guardian may be resurrected, then
  1331.      you should make the guardian greedy (this is the default).
  1332.  
  1333.      See R. Kent Dybvig, Carl Bruggeman, and David Eby (1993)
  1334.      "Guardians in a Generation-Based Garbage Collector".  ACM SIGPLAN
  1335.      Conference on Programming Language Design and Implementation, June
  1336.      1993.
  1337.  
  1338.      (the semantics are slightly different at this point, but the paper
  1339.      still (mostly) accurately describes the interface).
  1340.  
  1341.     guardian-destroyed?
  1342.  
  1343.  - Scheme Procedure: guardian-destroyed? guardian
  1344.      Return `#t' if GUARDIAN has been destroyed, otherwise `#f'.
  1345.  
  1346.     guardian-greedy?
  1347.  
  1348.  - Scheme Procedure: guardian-greedy? guardian
  1349.      Return `#t' if GUARDIAN is a greedy guardian, otherwise `#f'.
  1350.  
  1351.     destroy-guardian!
  1352.  
  1353.  - Scheme Procedure: destroy-guardian! guardian
  1354.      Destroys GUARDIAN, by making it impossible to put any more objects
  1355.      in it or get any objects from it.  It also unguards any objects
  1356.      guarded by GUARDIAN.
  1357.  
  1358.     hashq
  1359.  
  1360.  - Scheme Procedure: hashq key size
  1361.      Determine a hash value for KEY that is suitable for lookups in a
  1362.      hashtable of size SIZE, where `eq?' is used as the equality
  1363.      predicate.  The function returns an integer in the range 0 to SIZE
  1364.      - 1.  Note that `hashq' may use internal addresses.  Thus two
  1365.      calls to hashq where the keys are `eq?' are not guaranteed to
  1366.      deliver the same value if the key object gets garbage collected in
  1367.      between.  This can happen, for example with symbols: `(hashq 'foo
  1368.      n) (gc) (hashq 'foo n)' may produce two different values, since
  1369.      `foo' will be garbage collected.
  1370.  
  1371.     hashv
  1372.  
  1373.  - Scheme Procedure: hashv key size
  1374.      Determine a hash value for KEY that is suitable for lookups in a
  1375.      hashtable of size SIZE, where `eqv?' is used as the equality
  1376.      predicate.  The function returns an integer in the range 0 to SIZE
  1377.      - 1.  Note that `(hashv key)' may use internal addresses.  Thus
  1378.      two calls to hashv where the keys are `eqv?' are not guaranteed to
  1379.      deliver the same value if the key object gets garbage collected in
  1380.      between.  This can happen, for example with symbols: `(hashv 'foo
  1381.      n) (gc) (hashv 'foo n)' may produce two different values, since
  1382.      `foo' will be garbage collected.
  1383.  
  1384.     hash
  1385.  
  1386.  - Scheme Procedure: hash key size
  1387.      Determine a hash value for KEY that is suitable for lookups in a
  1388.      hashtable of size SIZE, where `equal?' is used as the equality
  1389.      predicate.  The function returns an integer in the range 0 to SIZE
  1390.      - 1.
  1391.  
  1392.     hashq-get-handle
  1393.  
  1394.  - Scheme Procedure: hashq-get-handle table key
  1395.      This procedure returns the `(key . value)' pair from the hash
  1396.      table TABLE.  If TABLE does not hold an associated value for KEY,
  1397.      `#f' is returned.  Uses `eq?' for equality testing.
  1398.  
  1399.     hashq-create-handle!
  1400.  
  1401.  - Scheme Procedure: hashq-create-handle! table key init
  1402.      This function looks up KEY in TABLE and returns its handle.  If
  1403.      KEY is not already present, a new handle is created which
  1404.      associates KEY with INIT.
  1405.  
  1406.     hashq-ref
  1407.  
  1408.  - Scheme Procedure: hashq-ref table key [dflt]
  1409.      Look up KEY in the hash table TABLE, and return the value (if any)
  1410.      associated with it.  If KEY is not found, return DEFAULT (or `#f'
  1411.      if no DEFAULT argument is supplied).  Uses `eq?' for equality
  1412.      testing.
  1413.  
  1414.     hashq-set!
  1415.  
  1416.  - Scheme Procedure: hashq-set! table key val
  1417.      Find the entry in TABLE associated with KEY, and store VALUE
  1418.      there. Uses `eq?' for equality testing.
  1419.  
  1420.     hashq-remove!
  1421.  
  1422.  - Scheme Procedure: hashq-remove! table key
  1423.      Remove KEY (and any value associated with it) from TABLE.  Uses
  1424.      `eq?' for equality tests.
  1425.  
  1426.     hashv-get-handle
  1427.  
  1428.  - Scheme Procedure: hashv-get-handle table key
  1429.      This procedure returns the `(key . value)' pair from the hash
  1430.      table TABLE.  If TABLE does not hold an associated value for KEY,
  1431.      `#f' is returned.  Uses `eqv?' for equality testing.
  1432.  
  1433.     hashv-create-handle!
  1434.  
  1435.  - Scheme Procedure: hashv-create-handle! table key init
  1436.      This function looks up KEY in TABLE and returns its handle.  If
  1437.      KEY is not already present, a new handle is created which
  1438.      associates KEY with INIT.
  1439.  
  1440.     hashv-ref
  1441.  
  1442.  - Scheme Procedure: hashv-ref table key [dflt]
  1443.      Look up KEY in the hash table TABLE, and return the value (if any)
  1444.      associated with it.  If KEY is not found, return DEFAULT (or `#f'
  1445.      if no DEFAULT argument is supplied).  Uses `eqv?' for equality
  1446.      testing.
  1447.  
  1448.     hashv-set!
  1449.  
  1450.  - Scheme Procedure: hashv-set! table key val
  1451.      Find the entry in TABLE associated with KEY, and store VALUE
  1452.      there. Uses `eqv?' for equality testing.
  1453.  
  1454.     hashv-remove!
  1455.  
  1456.  - Scheme Procedure: hashv-remove! table key
  1457.      Remove KEY (and any value associated with it) from TABLE.  Uses
  1458.      `eqv?' for equality tests.
  1459.  
  1460.     hash-get-handle
  1461.  
  1462.  - Scheme Procedure: hash-get-handle table key
  1463.      This procedure returns the `(key . value)' pair from the hash
  1464.      table TABLE.  If TABLE does not hold an associated value for KEY,
  1465.      `#f' is returned.  Uses `equal?' for equality testing.
  1466.  
  1467.     hash-create-handle!
  1468.  
  1469.  - Scheme Procedure: hash-create-handle! table key init
  1470.      This function looks up KEY in TABLE and returns its handle.  If
  1471.      KEY is not already present, a new handle is created which
  1472.      associates KEY with INIT.
  1473.  
  1474.     hash-ref
  1475.  
  1476.  - Scheme Procedure: hash-ref table key [dflt]
  1477.      Look up KEY in the hash table TABLE, and return the value (if any)
  1478.      associated with it.  If KEY is not found, return DEFAULT (or `#f'
  1479.      if no DEFAULT argument is supplied).  Uses `equal?' for equality
  1480.      testing.
  1481.  
  1482.     hash-set!
  1483.  
  1484.  - Scheme Procedure: hash-set! table key val
  1485.      Find the entry in TABLE associated with KEY, and store VALUE
  1486.      there. Uses `equal?' for equality testing.
  1487.  
  1488.     hash-remove!
  1489.  
  1490.  - Scheme Procedure: hash-remove! table key
  1491.      Remove KEY (and any value associated with it) from TABLE.  Uses
  1492.      `equal?' for equality tests.
  1493.  
  1494.     hashx-get-handle
  1495.  
  1496.  - Scheme Procedure: hashx-get-handle hash assoc table key
  1497.      This behaves the same way as the corresponding `-get-handle'
  1498.      function, but uses HASH as a hash function and ASSOC to compare
  1499.      keys.  `hash' must be a function that takes two arguments, a key
  1500.      to be hashed and a table size.  `assoc' must be an associator
  1501.      function, like `assoc', `assq' or `assv'.
  1502.  
  1503.     hashx-create-handle!
  1504.  
  1505.  - Scheme Procedure: hashx-create-handle! hash assoc table key init
  1506.      This behaves the same way as the corresponding `-create-handle'
  1507.      function, but uses HASH as a hash function and ASSOC to compare
  1508.      keys.  `hash' must be a function that takes two arguments, a key
  1509.      to be hashed and a table size.  `assoc' must be an associator
  1510.      function, like `assoc', `assq' or `assv'.
  1511.  
  1512.     hashx-ref
  1513.  
  1514.  - Scheme Procedure: hashx-ref hash assoc table key [dflt]
  1515.      This behaves the same way as the corresponding `ref' function, but
  1516.      uses HASH as a hash function and ASSOC to compare keys.  `hash'
  1517.      must be a function that takes two arguments, a key to be hashed
  1518.      and a table size.  `assoc' must be an associator function, like
  1519.      `assoc', `assq' or `assv'.
  1520.  
  1521.      By way of illustration, `hashq-ref table key' is equivalent to
  1522.      `hashx-ref hashq assq table key'.
  1523.  
  1524.     hashx-set!
  1525.  
  1526.  - Scheme Procedure: hashx-set! hash assoc table key val
  1527.      This behaves the same way as the corresponding `set!' function,
  1528.      but uses HASH as a hash function and ASSOC to compare keys.
  1529.      `hash' must be a function that takes two arguments, a key to be
  1530.      hashed and a table size.  `assoc' must be an associator function,
  1531.      like `assoc', `assq' or `assv'.
  1532.  
  1533.      By way of illustration, `hashq-set! table key' is equivalent to
  1534.      `hashx-set!  hashq assq table key'.
  1535.  
  1536.     hash-fold
  1537.  
  1538.  - Scheme Procedure: hash-fold proc init table
  1539.      An iterator over hash-table elements.  Accumulates and returns a
  1540.      result by applying PROC successively.  The arguments to PROC are
  1541.      "(key value prior-result)" where key and value are successive
  1542.      pairs from the hash table TABLE, and prior-result is either INIT
  1543.      (for the first application of PROC) or the return value of the
  1544.      previous application of PROC.  For example, `(hash-fold acons '()
  1545.      tab)' will convert a hash table into an a-list of key-value pairs.
  1546.  
  1547.     make-hook
  1548.  
  1549.  - Scheme Procedure: make-hook [n_args]
  1550.      Create a hook for storing procedure of arity N_ARGS.  N_ARGS
  1551.      defaults to zero.  The returned value is a hook object to be used
  1552.      with the other hook procedures.
  1553.  
  1554.     hook?
  1555.  
  1556.  - Scheme Procedure: hook? x
  1557.      Return `#t' if X is a hook, `#f' otherwise.
  1558.  
  1559.     hook-empty?
  1560.  
  1561.  - Scheme Procedure: hook-empty? hook
  1562.      Return `#t' if HOOK is an empty hook, `#f' otherwise.
  1563.  
  1564.     add-hook!
  1565.  
  1566.  - Scheme Procedure: add-hook! hook proc [append_p]
  1567.      Add the procedure PROC to the hook HOOK. The procedure is added to
  1568.      the end if APPEND_P is true, otherwise it is added to the front.
  1569.      The return value of this procedure is not specified.
  1570.  
  1571.     remove-hook!
  1572.  
  1573.  - Scheme Procedure: remove-hook! hook proc
  1574.      Remove the procedure PROC from the hook HOOK.  The return value of
  1575.      this procedure is not specified.
  1576.  
  1577.     reset-hook!
  1578.  
  1579.  - Scheme Procedure: reset-hook! hook
  1580.      Remove all procedures from the hook HOOK.  The return value of
  1581.      this procedure is not specified.
  1582.  
  1583.     run-hook
  1584.  
  1585.  - Scheme Procedure: run-hook hook . args
  1586.      Apply all procedures from the hook HOOK to the arguments ARGS.
  1587.      The order of the procedure application is first to last.  The
  1588.      return value of this procedure is not specified.
  1589.  
  1590.     hook->list
  1591.  
  1592.  - Scheme Procedure: hook->list hook
  1593.      Convert the procedure list of HOOK to a list.
  1594.  
  1595.     ftell
  1596.  
  1597.  - Scheme Procedure: ftell fd_port
  1598.      Return an integer representing the current position of FD/PORT,
  1599.      measured from the beginning.  Equivalent to:
  1600.  
  1601.           (seek port 0 SEEK_CUR)
  1602.  
  1603.     redirect-port
  1604.  
  1605.  - Scheme Procedure: redirect-port old new
  1606.      This procedure takes two ports and duplicates the underlying file
  1607.      descriptor from OLD-PORT into NEW-PORT.  The current file
  1608.      descriptor in NEW-PORT will be closed.  After the redirection the
  1609.      two ports will share a file position and file status flags.
  1610.  
  1611.      The return value is unspecified.
  1612.  
  1613.      Unexpected behaviour can result if both ports are subsequently used
  1614.      and the original and/or duplicate ports are buffered.
  1615.  
  1616.      This procedure does not have any side effects on other ports or
  1617.      revealed counts.
  1618.  
  1619.     dup->fdes
  1620.  
  1621.  - Scheme Procedure: dup->fdes fd_or_port [fd]
  1622.      Return a new integer file descriptor referring to the open file
  1623.      designated by FD_OR_PORT, which must be either an open file port
  1624.      or a file descriptor.
  1625.  
  1626.     dup2
  1627.  
  1628.  - Scheme Procedure: dup2 oldfd newfd
  1629.      A simple wrapper for the `dup2' system call.  Copies the file
  1630.      descriptor OLDFD to descriptor number NEWFD, replacing the
  1631.      previous meaning of NEWFD.  Both OLDFD and NEWFD must be integers.
  1632.      Unlike for dup->fdes or primitive-move->fdes, no attempt is made
  1633.      to move away ports which are using NEWFD.  The return value is
  1634.      unspecified.
  1635.  
  1636.     fileno
  1637.  
  1638.  - Scheme Procedure: fileno port
  1639.      Return the integer file descriptor underlying PORT.  Does not
  1640.      change its revealed count.
  1641.  
  1642.     isatty?
  1643.  
  1644.  - Scheme Procedure: isatty? port
  1645.      Return `#t' if PORT is using a serial non-file device, otherwise
  1646.      `#f'.
  1647.  
  1648.     fdopen
  1649.  
  1650.  - Scheme Procedure: fdopen fdes modes
  1651.      Return a new port based on the file descriptor FDES.  Modes are
  1652.      given by the string MODES.  The revealed count of the port is
  1653.      initialized to zero.  The modes string is the same as that
  1654.      accepted by *Note open-file: File Ports.
  1655.  
  1656.     primitive-move->fdes
  1657.  
  1658.  - Scheme Procedure: primitive-move->fdes port fd
  1659.      Moves the underlying file descriptor for PORT to the integer value
  1660.      FDES without changing the revealed count of PORT.  Any other ports
  1661.      already using this descriptor will be automatically shifted to new
  1662.      descriptors and their revealed counts reset to zero.  The return
  1663.      value is `#f' if the file descriptor already had the required
  1664.      value or `#t' if it was moved.
  1665.  
  1666.     fdes->ports
  1667.  
  1668.  - Scheme Procedure: fdes->ports fd
  1669.      Return a list of existing ports which have FDES as an underlying
  1670.      file descriptor, without changing their revealed counts.
  1671.  
  1672.     make-keyword-from-dash-symbol
  1673.  
  1674.  - Scheme Procedure: make-keyword-from-dash-symbol symbol
  1675.      Make a keyword object from a SYMBOL that starts with a dash.
  1676.  
  1677.     keyword?
  1678.  
  1679.  - Scheme Procedure: keyword? obj
  1680.      Return `#t' if the argument OBJ is a keyword, else `#f'.
  1681.  
  1682.     keyword-dash-symbol
  1683.  
  1684.  - Scheme Procedure: keyword-dash-symbol keyword
  1685.      Return the dash symbol for KEYWORD.  This is the inverse of
  1686.      `make-keyword-from-dash-symbol'.
  1687.  
  1688.     nil-cons
  1689.  
  1690.  - Scheme Procedure: nil-cons x y
  1691.      Create a new cons cell with X as the car and Y as the cdr, but
  1692.      convert Y to Scheme's end-of-list if it is a LISP nil.
  1693.  
  1694.     nil-car
  1695.  
  1696.  - Scheme Procedure: nil-car x
  1697.      Return the car of X, but convert it to LISP nil if it is Scheme's
  1698.      end-of-list.
  1699.  
  1700.     nil-cdr
  1701.  
  1702.  - Scheme Procedure: nil-cdr x
  1703.      Return the cdr of X, but convert it to LISP nil if it is Scheme's
  1704.      end-of-list.
  1705.  
  1706.     null
  1707.  
  1708.  - Scheme Procedure: null x
  1709.      Return LISP's `t' if X is nil in the LISP sense, return LISP's nil
  1710.      otherwise.
  1711.  
  1712.     nil-eq
  1713.  
  1714.  - Scheme Procedure: nil-eq x y
  1715.      Compare X and Y and return LISP's t if they are `eq?', return
  1716.      LISP's nil otherwise.
  1717.  
  1718.     list
  1719.  
  1720.  - Scheme Procedure: list . objs
  1721.      Return a list containing OBJS, the arguments to `list'.
  1722.  
  1723.     list*
  1724.  
  1725.  - Scheme Procedure: list*
  1726.      implemented by the C function "scm_cons_star"
  1727.  
  1728.     cons*
  1729.  
  1730.  - Scheme Procedure: cons* arg . rest
  1731.      Like `list', but the last arg provides the tail of the constructed
  1732.      list, returning `(cons ARG1 (cons ARG2 (cons ... ARGN)))'.
  1733.      Requires at least one argument.  If given one argument, that
  1734.      argument is returned as result.  This function is called `list*'
  1735.      in some other Schemes and in Common LISP.
  1736.  
  1737.     null?
  1738.  
  1739.  - Scheme Procedure: null? x
  1740.      Return `#t' iff X is the empty list, else `#f'.
  1741.  
  1742.     list?
  1743.  
  1744.  - Scheme Procedure: list? x
  1745.      Return `#t' iff X is a proper list, else `#f'.
  1746.  
  1747.     length
  1748.  
  1749.  - Scheme Procedure: length lst
  1750.      Return the number of elements in list LST.
  1751.  
  1752.     append
  1753.  
  1754.  - Scheme Procedure: append . args
  1755.      Return a list consisting of the elements the lists passed as
  1756.      arguments.
  1757.           (append '(x) '(y))          =>  (x y)
  1758.           (append '(a) '(b c d))      =>  (a b c d)
  1759.           (append '(a (b)) '((c)))    =>  (a (b) (c))
  1760.      The resulting list is always newly allocated, except that it
  1761.      shares structure with the last list argument.  The last argument
  1762.      may actually be any object; an improper list results if the last
  1763.      argument is not a proper list.
  1764.           (append '(a b) '(c . d))    =>  (a b c . d)
  1765.           (append '() 'a)             =>  a
  1766.  
  1767.     append!
  1768.  
  1769.  - Scheme Procedure: append! . lists
  1770.      A destructive version of `append' (*note Pairs and Lists:
  1771.      (r5rs)Pairs and Lists.).  The cdr field of each list's final pair
  1772.      is changed to point to the head of the next list, so no consing is
  1773.      performed.  Return a pointer to the mutated list.
  1774.  
  1775.     last-pair
  1776.  
  1777.  - Scheme Procedure: last-pair lst
  1778.      Return a pointer to the last pair in LST, signalling an error if
  1779.      LST is circular.
  1780.  
  1781.     reverse
  1782.  
  1783.  - Scheme Procedure: reverse lst
  1784.      Return a new list that contains the elements of LST but in reverse
  1785.      order.
  1786.  
  1787.     reverse!
  1788.  
  1789.  - Scheme Procedure: reverse! lst [new_tail]
  1790.      A destructive version of `reverse' (*note Pairs and Lists:
  1791.      (r5rs)Pairs and Lists.).  The cdr of each cell in LST is modified
  1792.      to point to the previous list element.  Return a pointer to the
  1793.      head of the reversed list.
  1794.  
  1795.      Caveat: because the list is modified in place, the tail of the
  1796.      original list now becomes its head, and the head of the original
  1797.      list now becomes the tail.  Therefore, the LST symbol to which the
  1798.      head of the original list was bound now points to the tail.  To
  1799.      ensure that the head of the modified list is not lost, it is wise
  1800.      to save the return value of `reverse!'
  1801.  
  1802.     list-ref
  1803.  
  1804.  - Scheme Procedure: list-ref list k
  1805.      Return the Kth element from LIST.
  1806.  
  1807.     list-set!
  1808.  
  1809.  - Scheme Procedure: list-set! list k val
  1810.      Set the Kth element of LIST to VAL.
  1811.  
  1812.     list-cdr-ref
  1813.  
  1814.  - Scheme Procedure: list-cdr-ref
  1815.      implemented by the C function "scm_list_tail"
  1816.  
  1817.     list-tail
  1818.  
  1819.  - Scheme Procedure: list-tail lst k
  1820.  - Scheme Procedure: list-cdr-ref lst k
  1821.      Return the "tail" of LST beginning with its Kth element.  The
  1822.      first element of the list is considered to be element 0.
  1823.  
  1824.      `list-tail' and `list-cdr-ref' are identical.  It may help to
  1825.      think of `list-cdr-ref' as accessing the Kth cdr of the list, or
  1826.      returning the results of cdring K times down LST.
  1827.  
  1828.     list-cdr-set!
  1829.  
  1830.  - Scheme Procedure: list-cdr-set! list k val
  1831.      Set the Kth cdr of LIST to VAL.
  1832.  
  1833.     list-head
  1834.  
  1835.  - Scheme Procedure: list-head lst k
  1836.      Copy the first K elements from LST into a new list, and return it.
  1837.  
  1838.     list-copy
  1839.  
  1840.  - Scheme Procedure: list-copy lst
  1841.      Return a (newly-created) copy of LST.
  1842.  
  1843.     sloppy-memq
  1844.  
  1845.  - Scheme Procedure: sloppy-memq x lst
  1846.      This procedure behaves like `memq', but does no type or error
  1847.      checking.  Its use is recommended only in writing Guile internals,
  1848.      not for high-level Scheme programs.
  1849.  
  1850.     sloppy-memv
  1851.  
  1852.  - Scheme Procedure: sloppy-memv x lst
  1853.      This procedure behaves like `memv', but does no type or error
  1854.      checking.  Its use is recommended only in writing Guile internals,
  1855.      not for high-level Scheme programs.
  1856.  
  1857.     sloppy-member
  1858.  
  1859.  - Scheme Procedure: sloppy-member x lst
  1860.      This procedure behaves like `member', but does no type or error
  1861.      checking.  Its use is recommended only in writing Guile internals,
  1862.      not for high-level Scheme programs.
  1863.  
  1864.     memq
  1865.  
  1866.  - Scheme Procedure: memq x lst
  1867.      Return the first sublist of LST whose car is `eq?' to X where the
  1868.      sublists of LST are the non-empty lists returned by `(list-tail
  1869.      LST K)' for K less than the length of LST.  If X does not occur in
  1870.      LST, then `#f' (not the empty list) is returned.
  1871.  
  1872.     memv
  1873.  
  1874.  - Scheme Procedure: memv x lst
  1875.      Return the first sublist of LST whose car is `eqv?' to X where the
  1876.      sublists of LST are the non-empty lists returned by `(list-tail
  1877.      LST K)' for K less than the length of LST.  If X does not occur in
  1878.      LST, then `#f' (not the empty list) is returned.
  1879.  
  1880.     member
  1881.  
  1882.  - Scheme Procedure: member x lst
  1883.      Return the first sublist of LST whose car is `equal?' to X where
  1884.      the sublists of LST are the non-empty lists returned by
  1885.      `(list-tail LST K)' for K less than the length of LST.  If X does
  1886.      not occur in LST, then `#f' (not the empty list) is returned.
  1887.  
  1888.     delq!
  1889.  
  1890.  - Scheme Procedure: delq! item lst
  1891.  - Scheme Procedure: delv! item lst
  1892.  - Scheme Procedure: delete! item lst
  1893.      These procedures are destructive versions of `delq', `delv' and
  1894.      `delete': they modify the pointers in the existing LST rather than
  1895.      creating a new list.  Caveat evaluator: Like other destructive
  1896.      list functions, these functions cannot modify the binding of LST,
  1897.      and so cannot be used to delete the first element of LST
  1898.      destructively.
  1899.  
  1900.     delv!
  1901.  
  1902.  - Scheme Procedure: delv! item lst
  1903.      Destructively remove all elements from LST that are `eqv?' to ITEM.
  1904.  
  1905.     delete!
  1906.  
  1907.  - Scheme Procedure: delete! item lst
  1908.      Destructively remove all elements from LST that are `equal?' to
  1909.      ITEM.
  1910.  
  1911.     delq
  1912.  
  1913.  - Scheme Procedure: delq item lst
  1914.      Return a newly-created copy of LST with elements `eq?' to ITEM
  1915.      removed.  This procedure mirrors `memq': `delq' compares elements
  1916.      of LST against ITEM with `eq?'.
  1917.  
  1918.     delv
  1919.  
  1920.  - Scheme Procedure: delv item lst
  1921.      Return a newly-created copy of LST with elements `eqv?'  to ITEM
  1922.      removed.  This procedure mirrors `memv': `delv' compares elements
  1923.      of LST against ITEM with `eqv?'.
  1924.  
  1925.     delete
  1926.  
  1927.  - Scheme Procedure: delete item lst
  1928.      Return a newly-created copy of LST with elements `equal?'  to ITEM
  1929.      removed.  This procedure mirrors `member': `delete' compares
  1930.      elements of LST against ITEM with `equal?'.
  1931.  
  1932.     delq1!
  1933.  
  1934.  - Scheme Procedure: delq1! item lst
  1935.      Like `delq!', but only deletes the first occurrence of ITEM from
  1936.      LST.  Tests for equality using `eq?'.  See also `delv1!' and
  1937.      `delete1!'.
  1938.  
  1939.     delv1!
  1940.  
  1941.  - Scheme Procedure: delv1! item lst
  1942.      Like `delv!', but only deletes the first occurrence of ITEM from
  1943.      LST.  Tests for equality using `eqv?'.  See also `delq1!' and
  1944.      `delete1!'.
  1945.  
  1946.     delete1!
  1947.  
  1948.  - Scheme Procedure: delete1! item lst
  1949.      Like `delete!', but only deletes the first occurrence of ITEM from
  1950.      LST.  Tests for equality using `equal?'.  See also `delq1!' and
  1951.      `delv1!'.
  1952.  
  1953.     primitive-load
  1954.  
  1955.  - Scheme Procedure: primitive-load filename
  1956.      Load the file named FILENAME and evaluate its contents in the
  1957.      top-level environment. The load paths are not searched; FILENAME
  1958.      must either be a full pathname or be a pathname relative to the
  1959.      current directory.  If the  variable `%load-hook' is defined, it
  1960.      should be bound to a procedure that will be called before any code
  1961.      is loaded.  See the documentation for `%load-hook' later in this
  1962.      section.
  1963.  
  1964.     %package-data-dir
  1965.  
  1966.  - Scheme Procedure: %package-data-dir
  1967.      Return the name of the directory where Scheme packages, modules and
  1968.      libraries are kept.  On most Unix systems, this will be
  1969.      `/usr/local/share/guile'.
  1970.  
  1971.     %library-dir
  1972.  
  1973.  - Scheme Procedure: %library-dir
  1974.      Return the directory where the Guile Scheme library files are
  1975.      installed.  E.g., may return "/usr/share/guile/1.3.5".
  1976.  
  1977.     %site-dir
  1978.  
  1979.  - Scheme Procedure: %site-dir
  1980.      Return the directory where the Guile site files are installed.
  1981.      E.g., may return "/usr/share/guile/site".
  1982.  
  1983.     parse-path
  1984.  
  1985.  - Scheme Procedure: parse-path path [tail]
  1986.      Parse PATH, which is expected to be a colon-separated string, into
  1987.      a list and return the resulting list with TAIL appended. If PATH
  1988.      is `#f', TAIL is returned.
  1989.  
  1990.     search-path
  1991.  
  1992.  - Scheme Procedure: search-path path filename [extensions]
  1993.      Search PATH for a directory containing a file named FILENAME. The
  1994.      file must be readable, and not a directory.  If we find one,
  1995.      return its full filename; otherwise, return `#f'.  If FILENAME is
  1996.      absolute, return it unchanged.  If given, EXTENSIONS is a list of
  1997.      strings; for each directory in PATH, we search for FILENAME
  1998.      concatenated with each EXTENSION.
  1999.  
  2000.     %search-load-path
  2001.  
  2002.  - Scheme Procedure: %search-load-path filename
  2003.      Search %LOAD-PATH for the file named FILENAME, which must be
  2004.      readable by the current user.  If FILENAME is found in the list of
  2005.      paths to search or is an absolute pathname, return its full
  2006.      pathname.  Otherwise, return `#f'.  Filenames may have any of the
  2007.      optional extensions in the `%load-extensions' list;
  2008.      `%search-load-path' will try each extension automatically.
  2009.  
  2010.     primitive-load-path
  2011.  
  2012.  - Scheme Procedure: primitive-load-path filename
  2013.      Search %LOAD-PATH for the file named FILENAME and load it into the
  2014.      top-level environment.  If FILENAME is a relative pathname and is
  2015.      not found in the list of search paths, an error is signalled.
  2016.  
  2017.     read-and-eval!
  2018.  
  2019.  - Scheme Procedure: read-and-eval! [port]
  2020.      Read a form from PORT (standard input by default), and evaluate it
  2021.      (memoizing it in the process) in the top-level environment.  If no
  2022.      data is left to be read from PORT, an `end-of-file' error is
  2023.      signalled.
  2024.  
  2025.     procedure->syntax
  2026.  
  2027.  - Scheme Procedure: procedure->syntax code
  2028.      Return a "macro" which, when a symbol defined to this value
  2029.      appears as the first symbol in an expression, returns the result
  2030.      of applying CODE to the expression and the environment.
  2031.  
  2032.     procedure->macro
  2033.  
  2034.  - Scheme Procedure: procedure->macro code
  2035.      Return a "macro" which, when a symbol defined to this value
  2036.      appears as the first symbol in an expression, evaluates the result
  2037.      of applying CODE to the expression and the environment.  For
  2038.      example:
  2039.  
  2040.           (define trace
  2041.             (procedure->macro
  2042.              (lambda (x env) `(set! ,(cadr x) (tracef ,(cadr x) ',(cadr x))))))
  2043.           
  2044.           (trace foo) == (set! foo (tracef foo 'foo)).
  2045.  
  2046.     procedure->memoizing-macro
  2047.  
  2048.  - Scheme Procedure: procedure->memoizing-macro code
  2049.      Return a "macro" which, when a symbol defined to this value
  2050.      appears as the first symbol in an expression, evaluates the result
  2051.      of applying CODE to the expression and the environment.
  2052.  
  2053.      `procedure->memoizing-macro' is the same as `procedure->macro',
  2054.      except that the expression returned by CODE replaces the original
  2055.      macro expression in the memoized form of the containing code.
  2056.  
  2057.     macro?
  2058.  
  2059.  - Scheme Procedure: macro? obj
  2060.      Return `#t' if OBJ is a regular macro, a memoizing macro or a
  2061.      syntax transformer.
  2062.  
  2063.     macro-type
  2064.  
  2065.  - Scheme Procedure: macro-type m
  2066.      Return one of the symbols `syntax', `macro' or `macro!', depending
  2067.      on whether M is a syntax transformer, a regular macro, or a
  2068.      memoizing macro, respectively.  If M is not a macro, `#f' is
  2069.      returned.
  2070.  
  2071.     macro-name
  2072.  
  2073.  - Scheme Procedure: macro-name m
  2074.      Return the name of the macro M.
  2075.  
  2076.     macro-transformer
  2077.  
  2078.  - Scheme Procedure: macro-transformer m
  2079.      Return the transformer of the macro M.
  2080.  
  2081.     current-module
  2082.  
  2083.  - Scheme Procedure: current-module
  2084.      Return the current module.
  2085.  
  2086.     set-current-module
  2087.  
  2088.  - Scheme Procedure: set-current-module module
  2089.      Set the current module to MODULE and return the previous current
  2090.      module.
  2091.  
  2092.     interaction-environment
  2093.  
  2094.  - Scheme Procedure: interaction-environment
  2095.      Return a specifier for the environment that contains
  2096.      implementation-defined bindings, typically a superset of those
  2097.      listed in the report.  The intent is that this procedure will
  2098.      return the environment in which the implementation would evaluate
  2099.      expressions dynamically typed by the user.
  2100.  
  2101.     env-module
  2102.  
  2103.  - Scheme Procedure: env-module env
  2104.      Return the module of ENV, a lexical environment.
  2105.  
  2106.     standard-eval-closure
  2107.  
  2108.  - Scheme Procedure: standard-eval-closure module
  2109.      Return an eval closure for the module MODULE.
  2110.  
  2111.     standard-interface-eval-closure
  2112.  
  2113.  - Scheme Procedure: standard-interface-eval-closure module
  2114.      Return a interface eval closure for the module MODULE. Such a
  2115.      closure does not allow new bindings to be added.
  2116.  
  2117.     %get-pre-modules-obarray
  2118.  
  2119.  - Scheme Procedure: %get-pre-modules-obarray
  2120.      Return the obarray that is used for all new bindings before the
  2121.      module system is booted.  The first call to `set-current-module'
  2122.      will boot the module system.
  2123.  
  2124.     exact?
  2125.  
  2126.  - Scheme Procedure: exact? x
  2127.      Return `#t' if X is an exact number, `#f' otherwise.
  2128.  
  2129.     odd?
  2130.  
  2131.  - Scheme Procedure: odd? n
  2132.      Return `#t' if N is an odd number, `#f' otherwise.
  2133.  
  2134.     even?
  2135.  
  2136.  - Scheme Procedure: even? n
  2137.      Return `#t' if N is an even number, `#f' otherwise.
  2138.  
  2139.     logand
  2140.  
  2141.  - Scheme Procedure: logand n1 n2
  2142.      Return the bitwise AND of the integer arguments.
  2143.  
  2144.           (logand) => -1
  2145.           (logand 7) => 7
  2146.           (logand #b111 #b011 #b001) => 1
  2147.  
  2148.     logior
  2149.  
  2150.  - Scheme Procedure: logior n1 n2
  2151.      Return the bitwise OR of the integer arguments.
  2152.  
  2153.           (logior) => 0
  2154.           (logior 7) => 7
  2155.           (logior #b000 #b001 #b011) => 3
  2156.  
  2157.     logxor
  2158.  
  2159.  - Scheme Procedure: logxor n1 n2
  2160.      Return the bitwise XOR of the integer arguments.  A bit is set in
  2161.      the result if it is set in an odd number of arguments.
  2162.           (logxor) => 0
  2163.           (logxor 7) => 7
  2164.           (logxor #b000 #b001 #b011) => 2
  2165.           (logxor #b000 #b001 #b011 #b011) => 1
  2166.  
  2167.     logtest
  2168.  
  2169.  - Scheme Procedure: logtest j k
  2170.           (logtest j k) == (not (zero? (logand j k)))
  2171.           
  2172.           (logtest #b0100 #b1011) => #f
  2173.           (logtest #b0100 #b0111) => #t
  2174.  
  2175.     logbit?
  2176.  
  2177.  - Scheme Procedure: logbit? index j
  2178.           (logbit? index j) == (logtest (integer-expt 2 index) j)
  2179.           
  2180.           (logbit? 0 #b1101) => #t
  2181.           (logbit? 1 #b1101) => #f
  2182.           (logbit? 2 #b1101) => #t
  2183.           (logbit? 3 #b1101) => #t
  2184.           (logbit? 4 #b1101) => #f
  2185.  
  2186.     lognot
  2187.  
  2188.  - Scheme Procedure: lognot n
  2189.      Return the integer which is the 2s-complement of the integer
  2190.      argument.
  2191.  
  2192.           (number->string (lognot #b10000000) 2)
  2193.              => "-10000001"
  2194.           (number->string (lognot #b0) 2)
  2195.              => "-1"
  2196.  
  2197.     integer-expt
  2198.  
  2199.  - Scheme Procedure: integer-expt n k
  2200.      Return N raised to the non-negative integer exponent K.
  2201.  
  2202.           (integer-expt 2 5)
  2203.              => 32
  2204.           (integer-expt -3 3)
  2205.              => -27
  2206.  
  2207.     ash
  2208.  
  2209.  - Scheme Procedure: ash n cnt
  2210.      The function ash performs an arithmetic shift left by CNT bits (or
  2211.      shift right, if CNT is negative).  'Arithmetic' means, that the
  2212.      function does not guarantee to keep the bit structure of N, but
  2213.      rather guarantees that the result will always be rounded towards
  2214.      minus infinity.  Therefore, the results of ash and a corresponding
  2215.      bitwise shift will differ if N is negative.
  2216.  
  2217.      Formally, the function returns an integer equivalent to
  2218.      `(inexact->exact (floor (* N (expt 2 CNT))))'.
  2219.  
  2220.           (number->string (ash #b1 3) 2)     => "1000"
  2221.           (number->string (ash #b1010 -1) 2) => "101"
  2222.  
  2223.     bit-extract
  2224.  
  2225.  - Scheme Procedure: bit-extract n start end
  2226.      Return the integer composed of the START (inclusive) through END
  2227.      (exclusive) bits of N.  The STARTth bit becomes the 0-th bit in
  2228.      the result.
  2229.  
  2230.           (number->string (bit-extract #b1101101010 0 4) 2)
  2231.              => "1010"
  2232.           (number->string (bit-extract #b1101101010 4 9) 2)
  2233.              => "10110"
  2234.  
  2235.     logcount
  2236.  
  2237.  - Scheme Procedure: logcount n
  2238.      Return the number of bits in integer N.  If integer is positive,
  2239.      the 1-bits in its binary representation are counted.  If negative,
  2240.      the 0-bits in its two's-complement binary representation are
  2241.      counted.  If 0, 0 is returned.
  2242.  
  2243.           (logcount #b10101010)
  2244.              => 4
  2245.           (logcount 0)
  2246.              => 0
  2247.           (logcount -2)
  2248.              => 1
  2249.  
  2250.     integer-length
  2251.  
  2252.  - Scheme Procedure: integer-length n
  2253.      Return the number of bits necessary to represent N.
  2254.  
  2255.           (integer-length #b10101010)
  2256.              => 8
  2257.           (integer-length 0)
  2258.              => 0
  2259.           (integer-length #b1111)
  2260.              => 4
  2261.  
  2262.     number->string
  2263.  
  2264.  - Scheme Procedure: number->string n [radix]
  2265.      Return a string holding the external representation of the number
  2266.      N in the given RADIX.  If N is inexact, a radix of 10 will be used.
  2267.  
  2268.     string->number
  2269.  
  2270.  - Scheme Procedure: string->number string [radix]
  2271.      Return a number of the maximally precise representation expressed
  2272.      by the given STRING. RADIX must be an exact integer, either 2, 8,
  2273.      10, or 16. If supplied, RADIX is a default radix that may be
  2274.      overridden by an explicit radix prefix in STRING (e.g. "#o177").
  2275.      If RADIX is not supplied, then the default radix is 10. If string
  2276.      is not a syntactically valid notation for a number, then
  2277.      `string->number' returns `#f'.
  2278.  
  2279.     number?
  2280.  
  2281.  - Scheme Procedure: number?
  2282.      implemented by the C function "scm_number_p"
  2283.  
  2284.     complex?
  2285.  
  2286.  - Scheme Procedure: complex? x
  2287.      Return `#t' if X is a complex number, `#f' otherwise.  Note that
  2288.      the sets of real, rational and integer values form subsets of the
  2289.      set of complex numbers, i. e. the predicate will also be fulfilled
  2290.      if X is a real, rational or integer number.
  2291.  
  2292.     real?
  2293.  
  2294.  - Scheme Procedure: real?
  2295.      implemented by the C function "scm_real_p"
  2296.  
  2297.     rational?
  2298.  
  2299.  - Scheme Procedure: rational? x
  2300.      Return `#t' if X is a rational number, `#f' otherwise.  Note that
  2301.      the set of integer values forms a subset of the set of rational
  2302.      numbers, i. e. the predicate will also be fulfilled if X is an
  2303.      integer number.  Real numbers will also satisfy this predicate,
  2304.      because of their limited precision.
  2305.  
  2306.     integer?
  2307.  
  2308.  - Scheme Procedure: integer? x
  2309.      Return `#t' if X is an integer number, `#f' else.
  2310.  
  2311.     inexact?
  2312.  
  2313.  - Scheme Procedure: inexact? x
  2314.      Return `#t' if X is an inexact number, `#f' else.
  2315.  
  2316.     $expt
  2317.  
  2318.  - Scheme Procedure: $expt x y
  2319.      Return X raised to the power of Y. This procedure does not accept
  2320.      complex arguments.
  2321.  
  2322.     $atan2
  2323.  
  2324.  - Scheme Procedure: $atan2 x y
  2325.      Return the arc tangent of the two arguments X and Y. This is
  2326.      similar to calculating the arc tangent of X / Y, except that the
  2327.      signs of both arguments are used to determine the quadrant of the
  2328.      result. This procedure does not accept complex arguments.
  2329.  
  2330.     make-rectangular
  2331.  
  2332.  - Scheme Procedure: make-rectangular real imaginary
  2333.      Return a complex number constructed of the given REAL and
  2334.      IMAGINARY parts.
  2335.  
  2336.     make-polar
  2337.  
  2338.  - Scheme Procedure: make-polar x y
  2339.      Return the complex number X * e^(i * Y).
  2340.  
  2341.     inexact->exact
  2342.  
  2343.  - Scheme Procedure: inexact->exact z
  2344.      Return an exact number that is numerically closest to Z.
  2345.  
  2346.     class-of
  2347.  
  2348.  - Scheme Procedure: class-of x
  2349.      Return the class of X.
  2350.  
  2351.     entity?
  2352.  
  2353.  - Scheme Procedure: entity? obj
  2354.      Return `#t' if OBJ is an entity.
  2355.  
  2356.     operator?
  2357.  
  2358.  - Scheme Procedure: operator? obj
  2359.      Return `#t' if OBJ is an operator.
  2360.  
  2361.     valid-object-procedure?
  2362.  
  2363.  - Scheme Procedure: valid-object-procedure? proc
  2364.      Return `#t' iff PROC is a procedure that can be used with
  2365.      `set-object-procedure'.  It is always valid to use a closure
  2366.      constructed by `lambda'.
  2367.  
  2368.     set-object-procedure!
  2369.  
  2370.  - Scheme Procedure: set-object-procedure! obj proc
  2371.      Set the object procedure of OBJ to PROC.  OBJ must be either an
  2372.      entity or an operator.
  2373.  
  2374.     make-class-object
  2375.  
  2376.  - Scheme Procedure: make-class-object metaclass layout
  2377.      Create a new class object of class METACLASS, with the slot layout
  2378.      specified by LAYOUT.
  2379.  
  2380.     make-subclass-object
  2381.  
  2382.  - Scheme Procedure: make-subclass-object class layout
  2383.      Create a subclass object of CLASS, with the slot layout specified
  2384.      by LAYOUT.
  2385.  
  2386.     object-properties
  2387.  
  2388.  - Scheme Procedure: object-properties obj
  2389.      Return OBJ's property list.
  2390.  
  2391.     set-object-properties!
  2392.  
  2393.  - Scheme Procedure: set-object-properties! obj alist
  2394.      Set OBJ's property list to ALIST.
  2395.  
  2396.     object-property
  2397.  
  2398.  - Scheme Procedure: object-property obj key
  2399.      Return the property of OBJ with name KEY.
  2400.  
  2401.     set-object-property!
  2402.  
  2403.  - Scheme Procedure: set-object-property! obj key value
  2404.      In OBJ's property list, set the property named KEY to VALUE.
  2405.  
  2406.     cons
  2407.  
  2408.  - Scheme Procedure: cons x y
  2409.      Return a newly allocated pair whose car is X and whose cdr is Y.
  2410.      The pair is guaranteed to be different (in the sense of `eq?')
  2411.      from every previously existing object.
  2412.  
  2413.     pair?
  2414.  
  2415.  - Scheme Procedure: pair? x
  2416.      Return `#t' if X is a pair; otherwise return `#f'.
  2417.  
  2418.     set-car!
  2419.  
  2420.  - Scheme Procedure: set-car! pair value
  2421.      Stores VALUE in the car field of PAIR.  The value returned by
  2422.      `set-car!' is unspecified.
  2423.  
  2424.     set-cdr!
  2425.  
  2426.  - Scheme Procedure: set-cdr! pair value
  2427.      Stores VALUE in the cdr field of PAIR.  The value returned by
  2428.      `set-cdr!' is unspecified.
  2429.  
  2430.     char-ready?
  2431.  
  2432.  - Scheme Procedure: char-ready? [port]
  2433.      Return `#t' if a character is ready on input PORT and return `#f'
  2434.      otherwise.  If `char-ready?' returns `#t' then the next
  2435.      `read-char' operation on PORT is guaranteed not to hang.  If PORT
  2436.      is a file port at end of file then `char-ready?' returns `#t'.
  2437.  
  2438.  
  2439.     drain-input
  2440.  
  2441.  - Scheme Procedure: drain-input port
  2442.      This procedure clears a port's input buffers, similar to the way
  2443.      that force-output clears the output buffer.  The contents of the
  2444.      buffers are returned as a single string, e.g.,
  2445.  
  2446.           (define p (open-input-file ...))
  2447.           (drain-input p) => empty string, nothing buffered yet.
  2448.           (unread-char (read-char p) p)
  2449.           (drain-input p) => initial chars from p, up to the buffer size.
  2450.  
  2451.      Draining the buffers may be useful for cleanly finishing buffered
  2452.      I/O so that the file descriptor can be used directly for further
  2453.      input.
  2454.  
  2455.     current-input-port
  2456.  
  2457.  - Scheme Procedure: current-input-port
  2458.      Return the current input port.  This is the default port used by
  2459.      many input procedures.  Initially, `current-input-port' returns
  2460.      the "standard input" in Unix and C terminology.
  2461.  
  2462.     current-output-port
  2463.  
  2464.  - Scheme Procedure: current-output-port
  2465.      Return the current output port.  This is the default port used by
  2466.      many output procedures.  Initially, `current-output-port' returns
  2467.      the "standard output" in Unix and C terminology.
  2468.  
  2469.     current-error-port
  2470.  
  2471.  - Scheme Procedure: current-error-port
  2472.      Return the port to which errors and warnings should be sent (the
  2473.      "standard error" in Unix and C terminology).
  2474.  
  2475.     current-load-port
  2476.  
  2477.  - Scheme Procedure: current-load-port
  2478.      Return the current-load-port.  The load port is used internally by
  2479.      `primitive-load'.
  2480.  
  2481.     set-current-input-port
  2482.  
  2483.  - Scheme Procedure: set-current-input-port port
  2484.  - Scheme Procedure: set-current-output-port port
  2485.  - Scheme Procedure: set-current-error-port port
  2486.      Change the ports returned by `current-input-port',
  2487.      `current-output-port' and `current-error-port', respectively, so
  2488.      that they use the supplied PORT for input or output.
  2489.  
  2490.     set-current-output-port
  2491.  
  2492.  - Scheme Procedure: set-current-output-port port
  2493.      Set the current default output port to PORT.
  2494.  
  2495.     set-current-error-port
  2496.  
  2497.  - Scheme Procedure: set-current-error-port port
  2498.      Set the current default error port to PORT.
  2499.  
  2500.     port-revealed
  2501.  
  2502.  - Scheme Procedure: port-revealed port
  2503.      Return the revealed count for PORT.
  2504.  
  2505.     set-port-revealed!
  2506.  
  2507.  - Scheme Procedure: set-port-revealed! port rcount
  2508.      Sets the revealed count for a port to a given value.  The return
  2509.      value is unspecified.
  2510.  
  2511.     port-mode
  2512.  
  2513.  - Scheme Procedure: port-mode port
  2514.      Return the port modes associated with the open port PORT.  These
  2515.      will not necessarily be identical to the modes used when the port
  2516.      was opened, since modes such as "append" which are used only
  2517.      during port creation are not retained.
  2518.  
  2519.     close-port
  2520.  
  2521.  - Scheme Procedure: close-port port
  2522.      Close the specified port object.  Return `#t' if it successfully
  2523.      closes a port or `#f' if it was already closed.  An exception may
  2524.      be raised if an error occurs, for example when flushing buffered
  2525.      output.  See also *Note close: Ports and File Descriptors, for a
  2526.      procedure which can close file descriptors.
  2527.  
  2528.     close-input-port
  2529.  
  2530.  - Scheme Procedure: close-input-port port
  2531.      Close the specified input port object.  The routine has no effect
  2532.      if the file has already been closed.  An exception may be raised
  2533.      if an error occurs.  The value returned is unspecified.
  2534.  
  2535.      See also *Note close: Ports and File Descriptors, for a procedure
  2536.      which can close file descriptors.
  2537.  
  2538.     close-output-port
  2539.  
  2540.  - Scheme Procedure: close-output-port port
  2541.      Close the specified output port object.  The routine has no effect
  2542.      if the file has already been closed.  An exception may be raised
  2543.      if an error occurs.  The value returned is unspecified.
  2544.  
  2545.      See also *Note close: Ports and File Descriptors, for a procedure
  2546.      which can close file descriptors.
  2547.  
  2548.     port-for-each
  2549.  
  2550.  - Scheme Procedure: port-for-each proc
  2551.      Apply PROC to each port in the Guile port table in turn.  The
  2552.      return value is unspecified.  More specifically, PROC is applied
  2553.      exactly once to every port that exists in the system at the time
  2554.      PORT-FOR-EACH is invoked.  Changes to the port table while
  2555.      PORT-FOR-EACH is running have no effect as far as PORT-FOR-EACH is
  2556.      concerned.
  2557.  
  2558.     close-all-ports-except
  2559.  
  2560.  - Scheme Procedure: close-all-ports-except . ports
  2561.      [DEPRECATED] Close all open file ports used by the interpreter
  2562.      except for those supplied as arguments.  This procedure was
  2563.      intended to be used before an exec call to close file descriptors
  2564.      which are not needed in the new process.  However it has the
  2565.      undesirable side effect of flushing buffers, so it's deprecated.
  2566.      Use port-for-each instead.
  2567.  
  2568.     input-port?
  2569.  
  2570.  - Scheme Procedure: input-port? x
  2571.      Return `#t' if X is an input port, otherwise return `#f'.  Any
  2572.      object satisfying this predicate also satisfies `port?'.
  2573.  
  2574.     output-port?
  2575.  
  2576.  - Scheme Procedure: output-port? x
  2577.      Return `#t' if X is an output port, otherwise return `#f'.  Any
  2578.      object satisfying this predicate also satisfies `port?'.
  2579.  
  2580.     port?
  2581.  
  2582.  - Scheme Procedure: port? x
  2583.      Return a boolean indicating whether X is a port.  Equivalent to
  2584.      `(or (input-port? X) (output-port?  X))'.
  2585.  
  2586.     port-closed?
  2587.  
  2588.  - Scheme Procedure: port-closed? port
  2589.      Return `#t' if PORT is closed or `#f' if it is open.
  2590.  
  2591.     eof-object?
  2592.  
  2593.  - Scheme Procedure: eof-object? x
  2594.      Return `#t' if X is an end-of-file object; otherwise return `#f'.
  2595.  
  2596.     force-output
  2597.  
  2598.  - Scheme Procedure: force-output [port]
  2599.      Flush the specified output port, or the current output port if PORT
  2600.      is omitted.  The current output buffer contents are passed to the
  2601.      underlying port implementation (e.g., in the case of fports, the
  2602.      data will be written to the file and the output buffer will be
  2603.      cleared.)  It has no effect on an unbuffered port.
  2604.  
  2605.      The return value is unspecified.
  2606.  
  2607.     flush-all-ports
  2608.  
  2609.  - Scheme Procedure: flush-all-ports
  2610.      Equivalent to calling `force-output' on all open output ports.
  2611.      The return value is unspecified.
  2612.  
  2613.     read-char
  2614.  
  2615.  - Scheme Procedure: read-char [port]
  2616.      Return the next character available from PORT, updating PORT to
  2617.      point to the following character.  If no more characters are
  2618.      available, the end-of-file object is returned.
  2619.  
  2620.     peek-char
  2621.  
  2622.  - Scheme Procedure: peek-char [port]
  2623.      Return the next character available from PORT, _without_ updating
  2624.      PORT to point to the following character.  If no more characters
  2625.      are available, the end-of-file object is returned.
  2626.  
  2627.     unread-char
  2628.  
  2629.  - Scheme Procedure: unread-char cobj [port]
  2630.      Place CHAR in PORT so that it will be read by the next read
  2631.      operation.  If called multiple times, the unread characters will
  2632.      be read again in last-in first-out order.  If PORT is not
  2633.      supplied, the current input port is used.
  2634.  
  2635.     unread-string
  2636.  
  2637.  - Scheme Procedure: unread-string str port
  2638.      Place the string STR in PORT so that its characters will be read
  2639.      in subsequent read operations.  If called multiple times, the
  2640.      unread characters will be read again in last-in first-out order.
  2641.      If PORT is not supplied, the current-input-port is used.
  2642.  
  2643.     seek
  2644.  
  2645.  - Scheme Procedure: seek fd_port offset whence
  2646.      Sets the current position of FD/PORT to the integer OFFSET, which
  2647.      is interpreted according to the value of WHENCE.
  2648.  
  2649.      One of the following variables should be supplied for WHENCE:
  2650.  
  2651.       - Variable: SEEK_SET
  2652.           Seek from the beginning of the file.
  2653.  
  2654.       - Variable: SEEK_CUR
  2655.           Seek from the current position.
  2656.  
  2657.       - Variable: SEEK_END
  2658.           Seek from the end of the file.
  2659.      If FD/PORT is a file descriptor, the underlying system call is
  2660.      `lseek'.  PORT may be a string port.
  2661.  
  2662.      The value returned is the new position in the file.  This means
  2663.      that the current position of a port can be obtained using:
  2664.           (seek port 0 SEEK_CUR)
  2665.  
  2666.     truncate-file
  2667.  
  2668.  - Scheme Procedure: truncate-file object [length]
  2669.      Truncates the object referred to by OBJECT to at most LENGTH
  2670.      bytes.  OBJECT can be a string containing a file name or an
  2671.      integer file descriptor or a port.  LENGTH may be omitted if
  2672.      OBJECT is not a file name, in which case the truncation occurs at
  2673.      the current port.  position.  The return value is unspecified.
  2674.  
  2675.     port-line
  2676.  
  2677.  - Scheme Procedure: port-line port
  2678.      Return the current line number for PORT.
  2679.  
  2680.     set-port-line!
  2681.  
  2682.  - Scheme Procedure: set-port-line! port line
  2683.      Set the current line number for PORT to LINE.
  2684.  
  2685.     port-column
  2686.  
  2687.  - Scheme Procedure: port-column port
  2688.  - Scheme Procedure: port-line port
  2689.      Return the current column number or line number of PORT, using the
  2690.      current input port if none is specified.  If the number is
  2691.      unknown, the result is #f.  Otherwise, the result is a 0-origin
  2692.      integer - i.e. the first character of the first line is line 0,
  2693.      column 0.  (However, when you display a file position, for example
  2694.      in an error message, we recommend you add 1 to get 1-origin
  2695.      integers.  This is because lines and column numbers traditionally
  2696.      start with 1, and that is what non-programmers will find most
  2697.      natural.)
  2698.  
  2699.     set-port-column!
  2700.  
  2701.  - Scheme Procedure: set-port-column! port column
  2702.  - Scheme Procedure: set-port-line! port line
  2703.      Set the current column or line number of PORT, using the current
  2704.      input port if none is specified.
  2705.  
  2706.     port-filename
  2707.  
  2708.  - Scheme Procedure: port-filename port
  2709.      Return the filename associated with PORT.  This function returns
  2710.      the strings "standard input", "standard output" and "standard
  2711.      error" when called on the current input, output and error ports
  2712.      respectively.
  2713.  
  2714.     set-port-filename!
  2715.  
  2716.  - Scheme Procedure: set-port-filename! port filename
  2717.      Change the filename associated with PORT, using the current input
  2718.      port if none is specified.  Note that this does not change the
  2719.      port's source of data, but only the value that is returned by
  2720.      `port-filename' and reported in diagnostic output.
  2721.  
  2722.     %make-void-port
  2723.  
  2724.  - Scheme Procedure: %make-void-port mode
  2725.      Create and return a new void port.  A void port acts like
  2726.      `/dev/null'.  The MODE argument specifies the input/output modes
  2727.      for this port: see the documentation for `open-file' in *Note File
  2728.      Ports::.
  2729.  
  2730.     print-options-interface
  2731.  
  2732.  - Scheme Procedure: print-options-interface [setting]
  2733.      Option interface for the print options. Instead of using this
  2734.      procedure directly, use the procedures `print-enable',
  2735.      `print-disable', `print-set!' and `print-options'.
  2736.  
  2737.     simple-format
  2738.  
  2739.  - Scheme Procedure: simple-format destination message . args
  2740.      Write MESSAGE to DESTINATION, defaulting to the current output
  2741.      port.  MESSAGE can contain `~A' (was `%s') and `~S' (was `%S')
  2742.      escapes.  When printed, the escapes are replaced with
  2743.      corresponding members of ARGS: `~A' formats using `display' and
  2744.      `~S' formats using `write'.  If DESTINATION is `#t', then use the
  2745.      current output port, if DESTINATION is `#f', then return a string
  2746.      containing the formatted text. Does not add a trailing newline.
  2747.  
  2748.     newline
  2749.  
  2750.  - Scheme Procedure: newline [port]
  2751.      Send a newline to PORT.  If PORT is omitted, send to the current
  2752.      output port.
  2753.  
  2754.     write-char
  2755.  
  2756.  - Scheme Procedure: write-char chr [port]
  2757.      Send character CHR to PORT.
  2758.  
  2759.     port-with-print-state
  2760.  
  2761.  - Scheme Procedure: port-with-print-state port pstate
  2762.      Create a new port which behaves like PORT, but with an included
  2763.      print state PSTATE.
  2764.  
  2765.     get-print-state
  2766.  
  2767.  - Scheme Procedure: get-print-state port
  2768.      Return the print state of the port PORT. If PORT has no associated
  2769.      print state, `#f' is returned.
  2770.  
  2771.     procedure-properties
  2772.  
  2773.  - Scheme Procedure: procedure-properties proc
  2774.      Return OBJ's property list.
  2775.  
  2776.     set-procedure-properties!
  2777.  
  2778.  - Scheme Procedure: set-procedure-properties! proc new_val
  2779.      Set OBJ's property list to ALIST.
  2780.  
  2781.     procedure-property
  2782.  
  2783.  - Scheme Procedure: procedure-property p k
  2784.      Return the property of OBJ with name KEY.
  2785.  
  2786.     set-procedure-property!
  2787.  
  2788.  - Scheme Procedure: set-procedure-property! p k v
  2789.      In OBJ's property list, set the property named KEY to VALUE.
  2790.  
  2791.     procedure?
  2792.  
  2793.  - Scheme Procedure: procedure? obj
  2794.      Return `#t' if OBJ is a procedure.
  2795.  
  2796.     closure?
  2797.  
  2798.  - Scheme Procedure: closure? obj
  2799.      Return `#t' if OBJ is a closure.
  2800.  
  2801.     thunk?
  2802.  
  2803.  - Scheme Procedure: thunk? obj
  2804.      Return `#t' if OBJ is a thunk.
  2805.  
  2806.     procedure-documentation
  2807.  
  2808.  - Scheme Procedure: procedure-documentation proc
  2809.      Return the documentation string associated with `proc'.  By
  2810.      convention, if a procedure contains more than one expression and
  2811.      the first expression is a string constant, that string is assumed
  2812.      to contain documentation for that procedure.
  2813.  
  2814.     procedure-with-setter?
  2815.  
  2816.  - Scheme Procedure: procedure-with-setter? obj
  2817.      Return `#t' if OBJ is a procedure with an associated setter
  2818.      procedure.
  2819.  
  2820.     make-procedure-with-setter
  2821.  
  2822.  - Scheme Procedure: make-procedure-with-setter procedure setter
  2823.      Create a new procedure which behaves like PROCEDURE, but with the
  2824.      associated setter SETTER.
  2825.  
  2826.     procedure
  2827.  
  2828.  - Scheme Procedure: procedure proc
  2829.      Return the procedure of PROC, which must be either a procedure
  2830.      with setter, or an operator struct.
  2831.  
  2832.     primitive-make-property
  2833.  
  2834.  - Scheme Procedure: primitive-make-property not_found_proc
  2835.      Create a "property token" that can be used with
  2836.      `primitive-property-ref' and `primitive-property-set!'.  See
  2837.      `primitive-property-ref' for the significance of NOT_FOUND_PROC.
  2838.  
  2839.     primitive-property-ref
  2840.  
  2841.  - Scheme Procedure: primitive-property-ref prop obj
  2842.      Return the property PROP of OBJ.  When no value has yet been
  2843.      associated with PROP and OBJ, call NOT-FOUND-PROC instead (see
  2844.      `primitive-make-property') and use its return value.  That value
  2845.      is also associated with OBJ via `primitive-property-set!'.  When
  2846.      NOT-FOUND-PROC is `#f', use `#f' as the default value of PROP.
  2847.  
  2848.     primitive-property-set!
  2849.  
  2850.  - Scheme Procedure: primitive-property-set! prop obj val
  2851.      Associate CODE with PROP and OBJ.
  2852.  
  2853.     primitive-property-del!
  2854.  
  2855.  - Scheme Procedure: primitive-property-del! prop obj
  2856.      Remove any value associated with PROP and OBJ.
  2857.  
  2858.     random
  2859.  
  2860.  - Scheme Procedure: random n [state]
  2861.      Return a number in [0,N).
  2862.  
  2863.      Accepts a positive integer or real n and returns a number of the
  2864.      same type between zero (inclusive) and N (exclusive). The values
  2865.      returned have a uniform distribution.
  2866.  
  2867.      The optional argument STATE must be of the type produced by
  2868.      `seed->random-state'. It defaults to the value of the variable
  2869.      *RANDOM-STATE*. This object is used to maintain the state of the
  2870.      pseudo-random-number generator and is altered as a side effect of
  2871.      the random operation.
  2872.  
  2873.     copy-random-state
  2874.  
  2875.  - Scheme Procedure: copy-random-state [state]
  2876.      Return a copy of the random state STATE.
  2877.  
  2878.     seed->random-state
  2879.  
  2880.  - Scheme Procedure: seed->random-state seed
  2881.      Return a new random state using SEED.
  2882.  
  2883.     random:uniform
  2884.  
  2885.  - Scheme Procedure: random:uniform [state]
  2886.      Return a uniformly distributed inexact real random number in [0,1).
  2887.  
  2888.     random:normal
  2889.  
  2890.  - Scheme Procedure: random:normal [state]
  2891.      Return an inexact real in a normal distribution.  The distribution
  2892.      used has mean 0 and standard deviation 1.  For a normal
  2893.      distribution with mean m and standard deviation d use `(+ m (* d
  2894.      (random:normal)))'.
  2895.  
  2896.     random:solid-sphere!
  2897.  
  2898.  - Scheme Procedure: random:solid-sphere! v [state]
  2899.      Fills vect with inexact real random numbers the sum of whose
  2900.      squares is less than 1.0.  Thinking of vect as coordinates in
  2901.      space of dimension n = (vector-length vect), the coordinates are
  2902.      uniformly distributed within the unit n-sphere.  The sum of the
  2903.      squares of the numbers is returned.
  2904.  
  2905.     random:hollow-sphere!
  2906.  
  2907.  - Scheme Procedure: random:hollow-sphere! v [state]
  2908.      Fills vect with inexact real random numbers the sum of whose
  2909.      squares is equal to 1.0.  Thinking of vect as coordinates in space
  2910.      of dimension n = (vector-length vect), the coordinates are
  2911.      uniformly distributed over the surface of the unit n-sphere.
  2912.  
  2913.     random:normal-vector!
  2914.  
  2915.  - Scheme Procedure: random:normal-vector! v [state]
  2916.      Fills vect with inexact real random numbers that are independent
  2917.      and standard normally distributed (i.e., with mean 0 and variance
  2918.      1).
  2919.  
  2920.     random:exp
  2921.  
  2922.  - Scheme Procedure: random:exp [state]
  2923.      Return an inexact real in an exponential distribution with mean 1.
  2924.      For an exponential distribution with mean u use (* u
  2925.      (random:exp)).
  2926.  
  2927.     %read-delimited!
  2928.  
  2929.  - Scheme Procedure: %read-delimited! delims str gobble [port [start
  2930.           [end]]]
  2931.      Read characters from PORT into STR until one of the characters in
  2932.      the DELIMS string is encountered.  If GOBBLE is true, discard the
  2933.      delimiter character; otherwise, leave it in the input stream for
  2934.      the next read.  If PORT is not specified, use the value of
  2935.      `(current-input-port)'.  If START or END are specified, store data
  2936.      only into the substring of STR bounded by START and END (which
  2937.      default to the beginning and end of the string, respectively).
  2938.  
  2939.      Return a pair consisting of the delimiter that terminated the
  2940.      string and the number of characters read.  If reading stopped at
  2941.      the end of file, the delimiter returned is the EOF-OBJECT; if the
  2942.      string was filled without encountering a delimiter, this value is
  2943.      `#f'.
  2944.  
  2945.     %read-line
  2946.  
  2947.  - Scheme Procedure: %read-line [port]
  2948.      Read a newline-terminated line from PORT, allocating storage as
  2949.      necessary.  The newline terminator (if any) is removed from the
  2950.      string, and a pair consisting of the line and its delimiter is
  2951.      returned.  The delimiter may be either a newline or the
  2952.      EOF-OBJECT; if `%read-line' is called at the end of file, it
  2953.      returns the pair `(#<eof> . #<eof>)'.
  2954.  
  2955.     write-line
  2956.  
  2957.  - Scheme Procedure: write-line obj [port]
  2958.      Display OBJ and a newline character to PORT.  If PORT is not
  2959.      specified, `(current-output-port)' is used.  This function is
  2960.      equivalent to:
  2961.           (display obj [port])
  2962.           (newline [port])
  2963.  
  2964.     read-options-interface
  2965.  
  2966.  - Scheme Procedure: read-options-interface [setting]
  2967.      Option interface for the read options. Instead of using this
  2968.      procedure directly, use the procedures `read-enable',
  2969.      `read-disable', `read-set!' and `read-options'.
  2970.  
  2971.     read
  2972.  
  2973.  - Scheme Procedure: read [port]
  2974.      Read an s-expression from the input port PORT, or from the current
  2975.      input port if PORT is not specified.  Any whitespace before the
  2976.      next token is discarded.
  2977.  
  2978.     read-hash-extend
  2979.  
  2980.  - Scheme Procedure: read-hash-extend chr proc
  2981.      Install the procedure PROC for reading expressions starting with
  2982.      the character sequence `#' and CHR.  PROC will be called with two
  2983.      arguments:  the character CHR and the port to read further data
  2984.      from. The object returned will be the return value of `read'.
  2985.  
  2986.     call-with-dynamic-root
  2987.  
  2988.  - Scheme Procedure: call-with-dynamic-root thunk handler
  2989.      Evaluate `(thunk)' in a new dynamic context, returning its value.
  2990.  
  2991.      If an error occurs during evaluation, apply HANDLER to the
  2992.      arguments to the throw, just as `throw' would.  If this happens,
  2993.      HANDLER is called outside the scope of the new root - it is called
  2994.      in the same dynamic context in which `call-with-dynamic-root' was
  2995.      evaluated.
  2996.  
  2997.      If THUNK captures a continuation, the continuation is rooted at
  2998.      the call to THUNK.  In particular, the call to
  2999.      `call-with-dynamic-root' is not captured.  Therefore,
  3000.      `call-with-dynamic-root' always returns at most one time.
  3001.  
  3002.      Before calling THUNK, the dynamic-wind chain is un-wound back to
  3003.      the root and a new chain started for THUNK.  Therefore, this call
  3004.      may not do what you expect:
  3005.  
  3006.           ;; Almost certainly a bug:
  3007.           (with-output-to-port
  3008.            some-port
  3009.           
  3010.            (lambda ()
  3011.              (call-with-dynamic-root
  3012.               (lambda ()
  3013.                 (display 'fnord)
  3014.                 (newline))
  3015.               (lambda (errcode) errcode))))
  3016.  
  3017.      The problem is, on what port will `fnord' be displayed?  You might
  3018.      expect that because of the `with-output-to-port' that it will be
  3019.      displayed on the port bound to `some-port'.  But it probably won't
  3020.      - before evaluating the thunk, dynamic winds are unwound,
  3021.      including those created by `with-output-to-port'.  So, the
  3022.      standard output port will have been re-set to its default value
  3023.      before `display' is evaluated.
  3024.  
  3025.      (This function was added to Guile mostly to help calls to
  3026.      functions in C libraries that can not tolerate non-local exits or
  3027.      calls that return multiple times.  If such functions call back to
  3028.      the interpreter, it should be under a new dynamic root.)
  3029.  
  3030.     dynamic-root
  3031.  
  3032.  - Scheme Procedure: dynamic-root
  3033.      Return an object representing the current dynamic root.
  3034.  
  3035.      These objects are only useful for comparison using `eq?'.  They
  3036.      are currently represented as numbers, but your code should in no
  3037.      way depend on this.
  3038.  
  3039.     read-string!/partial
  3040.  
  3041.  - Scheme Procedure: read-string!/partial str [port_or_fdes [start
  3042.           [end]]]
  3043.      Read characters from a port or file descriptor into a string STR.
  3044.      A port must have an underlying file descriptor -- a so-called
  3045.      fport.  This procedure is scsh-compatible and can efficiently read
  3046.      large strings.  It will:
  3047.  
  3048.         * attempt to fill the entire string, unless the START and/or
  3049.           END arguments are supplied.  i.e., START defaults to 0 and
  3050.           END defaults to `(string-length str)'
  3051.  
  3052.         * use the current input port if PORT_OR_FDES is not supplied.
  3053.  
  3054.         * return fewer than the requested number of characters in some
  3055.           cases, e.g., on end of file, if interrupted by a signal, or if
  3056.           not all the characters are immediately available.
  3057.  
  3058.         * wait indefinitely for some input if no characters are
  3059.           currently available, unless the port is in non-blocking mode.
  3060.  
  3061.         * read characters from the port's input buffers if available,
  3062.           instead from the underlying file descriptor.
  3063.  
  3064.         * return `#f' if end-of-file is encountered before reading any
  3065.           characters, otherwise return the number of characters read.
  3066.  
  3067.         * return 0 if the port is in non-blocking mode and no characters
  3068.           are immediately available.
  3069.  
  3070.         * return 0 if the request is for 0 bytes, with no end-of-file
  3071.           check.
  3072.  
  3073.     write-string/partial
  3074.  
  3075.  - Scheme Procedure: write-string/partial str [port_or_fdes [start
  3076.           [end]]]
  3077.      Write characters from a string STR to a port or file descriptor.
  3078.      A port must have an underlying file descriptor -- a so-called
  3079.      fport.  This procedure is scsh-compatible and can efficiently
  3080.      write large strings.  It will:
  3081.  
  3082.         * attempt to write the entire string, unless the START and/or
  3083.           END arguments are supplied.  i.e., START defaults to 0 and
  3084.           END defaults to `(string-length str)'
  3085.  
  3086.         * use the current output port if PORT_OF_FDES is not supplied.
  3087.  
  3088.         * in the case of a buffered port, store the characters in the
  3089.           port's output buffer, if all will fit.  If they will not fit
  3090.           then any existing buffered characters will be flushed before
  3091.           attempting to write the new characters directly to the
  3092.           underlying file descriptor.  If the port is in non-blocking
  3093.           mode and buffered characters can not be flushed immediately,
  3094.           then an `EAGAIN' system-error exception will be raised (Note:
  3095.           scsh does not support the use of non-blocking buffered ports.)
  3096.  
  3097.         * write fewer than the requested number of characters in some
  3098.           cases, e.g., if interrupted by a signal or if not all of the
  3099.           output can be accepted immediately.
  3100.  
  3101.         * wait indefinitely for at least one character from STR to be
  3102.           accepted by the port, unless the port is in non-blocking mode.
  3103.  
  3104.         * return the number of characters accepted by the port.
  3105.  
  3106.         * return 0 if the port is in non-blocking mode and can not
  3107.           accept at least one character from STR immediately
  3108.  
  3109.         * return 0 immediately if the request size is 0 bytes.
  3110.  
  3111.     sigaction
  3112.  
  3113.  - Scheme Procedure: sigaction signum [handler [flags]]
  3114.      Install or report the signal handler for a specified signal.
  3115.  
  3116.      SIGNUM is the signal number, which can be specified using the value
  3117.      of variables such as `SIGINT'.
  3118.  
  3119.      If ACTION is omitted, `sigaction' returns a pair: the CAR is the
  3120.      current signal hander, which will be either an integer with the
  3121.      value `SIG_DFL' (default action) or `SIG_IGN' (ignore), or the
  3122.      Scheme procedure which handles the signal, or `#f' if a non-Scheme
  3123.      procedure handles the signal.  The CDR contains the current
  3124.      `sigaction' flags for the handler.
  3125.  
  3126.      If ACTION is provided, it is installed as the new handler for
  3127.      SIGNUM.  ACTION can be a Scheme procedure taking one argument, or
  3128.      the value of `SIG_DFL' (default action) or `SIG_IGN' (ignore), or
  3129.      `#f' to restore whatever signal handler was installed before
  3130.      `sigaction' was first used.  Flags can optionally be specified for
  3131.      the new handler (`SA_RESTART' will always be added if it's
  3132.      available and the system is using restartable system calls.)  The
  3133.      return value is a pair with information about the old handler as
  3134.      described above.
  3135.  
  3136.      This interface does not provide access to the "signal blocking"
  3137.      facility.  Maybe this is not needed, since the thread support may
  3138.      provide solutions to the problem of consistent access to data
  3139.      structures.
  3140.  
  3141.     restore-signals
  3142.  
  3143.  - Scheme Procedure: restore-signals
  3144.      Return all signal handlers to the values they had before any call
  3145.      to `sigaction' was made.  The return value is unspecified.
  3146.  
  3147.     alarm
  3148.  
  3149.  - Scheme Procedure: alarm i
  3150.      Set a timer to raise a `SIGALRM' signal after the specified number
  3151.      of seconds (an integer).  It's advisable to install a signal
  3152.      handler for `SIGALRM' beforehand, since the default action is to
  3153.      terminate the process.
  3154.  
  3155.      The return value indicates the time remaining for the previous
  3156.      alarm, if any.  The new value replaces the previous alarm.  If
  3157.      there was no previous alarm, the return value is zero.
  3158.  
  3159.     setitimer
  3160.  
  3161.  - Scheme Procedure: setitimer which_timer interval_seconds
  3162.           interval_microseconds value_seconds value_microseconds
  3163.      Set the timer specified by WHICH_TIMER according to the given
  3164.      INTERVAL_SECONDS, INTERVAL_MICROSECONDS, VALUE_SECONDS, and
  3165.      VALUE_MICROSECONDS values.
  3166.  
  3167.      Return information about the timer's previous setting.  Errors are
  3168.      handled as described in the guile info pages under "POSIX
  3169.      Interface Conventions".
  3170.  
  3171.      The timers available are: `ITIMER_REAL', `ITIMER_VIRTUAL', and
  3172.      `ITIMER_PROF'.
  3173.  
  3174.      The return value will be a list of two cons pairs representing the
  3175.      current state of the given timer.  The first pair is the seconds
  3176.      and microseconds of the timer `it_interval', and the second pair is
  3177.      the seconds and microseconds of the timer `it_value'.
  3178.  
  3179.     getitimer
  3180.  
  3181.  - Scheme Procedure: getitimer which_timer
  3182.      Return information about the timer specified by WHICH_TIMER Errors
  3183.      are handled as described in the guile info pages under "POSIX
  3184.      Interface Conventions".
  3185.  
  3186.      The timers available are: `ITIMER_REAL', `ITIMER_VIRTUAL', and
  3187.      `ITIMER_PROF'.
  3188.  
  3189.      The return value will be a list of two cons pairs representing the
  3190.      current state of the given timer.  The first pair is the seconds
  3191.      and microseconds of the timer `it_interval', and the second pair is
  3192.      the seconds and microseconds of the timer `it_value'.
  3193.  
  3194.     pause
  3195.  
  3196.  - Scheme Procedure: pause
  3197.      Pause the current process (thread?) until a signal arrives whose
  3198.      action is to either terminate the current process or invoke a
  3199.      handler procedure.  The return value is unspecified.
  3200.  
  3201.     sleep
  3202.  
  3203.  - Scheme Procedure: sleep i
  3204.      Wait for the given number of seconds (an integer) or until a signal
  3205.      arrives.  The return value is zero if the time elapses or the
  3206.      number of seconds remaining otherwise.
  3207.  
  3208.     usleep
  3209.  
  3210.  - Scheme Procedure: usleep i
  3211.      Sleep for I microseconds.  `usleep' is not available on all
  3212.      platforms.
  3213.  
  3214.     raise
  3215.  
  3216.  - Scheme Procedure: raise sig
  3217.      Sends a specified signal SIG to the current process, where SIG is
  3218.      as described for the kill procedure.
  3219.  
  3220.     system
  3221.  
  3222.  - Scheme Procedure: system [cmd]
  3223.      Execute CMD using the operating system's "command processor".
  3224.      Under Unix this is usually the default shell `sh'.  The value
  3225.      returned is CMD's exit status as returned by `waitpid', which can
  3226.      be interpreted using the functions above.
  3227.  
  3228.      If `system' is called without arguments, return a boolean
  3229.      indicating whether the command processor is available.
  3230.  
  3231.     getenv
  3232.  
  3233.  - Scheme Procedure: getenv nam
  3234.      Looks up the string NAME in the current environment.  The return
  3235.      value is `#f' unless a string of the form `NAME=VALUE' is found,
  3236.      in which case the string `VALUE' is returned.
  3237.  
  3238.     primitive-exit
  3239.  
  3240.  - Scheme Procedure: primitive-exit [status]
  3241.      Terminate the current process without unwinding the Scheme stack.
  3242.      This is would typically be useful after a fork.  The exit status
  3243.      is STATUS if supplied, otherwise zero.
  3244.  
  3245.     restricted-vector-sort!
  3246.  
  3247.  - Scheme Procedure: restricted-vector-sort! vec less startpos endpos
  3248.      Sort the vector VEC, using LESS for comparing the vector elements.
  3249.      STARTPOS and ENDPOS delimit the range of the vector which gets
  3250.      sorted.  The return value is not specified.
  3251.  
  3252.     sorted?
  3253.  
  3254.  - Scheme Procedure: sorted? items less
  3255.      Return `#t' iff ITEMS is a list or a vector such that for all 1 <=
  3256.      i <= m, the predicate LESS returns true when applied to all
  3257.      elements i - 1 and i
  3258.  
  3259.     merge
  3260.  
  3261.  - Scheme Procedure: merge alist blist less
  3262.      Merge two already sorted lists into one.  Given two lists ALIST
  3263.      and BLIST, such that `(sorted? alist less?)' and `(sorted? blist
  3264.      less?)', return a new list in which the elements of ALIST and
  3265.      BLIST have been stably interleaved so that `(sorted? (merge alist
  3266.      blist less?) less?)'.  Note:  this does _not_ accept vectors.
  3267.  
  3268.     merge!
  3269.  
  3270.  - Scheme Procedure: merge! alist blist less
  3271.      Takes two lists ALIST and BLIST such that `(sorted? alist less?)'
  3272.      and `(sorted? blist less?)' and returns a new list in which the
  3273.      elements of ALIST and BLIST have been stably interleaved so that
  3274.      `(sorted? (merge alist blist less?) less?)'.  This is the
  3275.      destructive variant of `merge' Note:  this does _not_ accept
  3276.      vectors.
  3277.  
  3278.     sort!
  3279.  
  3280.  - Scheme Procedure: sort! items less
  3281.      Sort the sequence ITEMS, which may be a list or a vector.  LESS is
  3282.      used for comparing the sequence elements.  The sorting is
  3283.      destructive, that means that the input sequence is modified to
  3284.      produce the sorted result.  This is not a stable sort.
  3285.  
  3286.     sort
  3287.  
  3288.  - Scheme Procedure: sort items less
  3289.      Sort the sequence ITEMS, which may be a list or a vector.  LESS is
  3290.      used for comparing the sequence elements.  This is not a stable
  3291.      sort.
  3292.  
  3293.     stable-sort!
  3294.  
  3295.  - Scheme Procedure: stable-sort! items less
  3296.      Sort the sequence ITEMS, which may be a list or a vector. LESS is
  3297.      used for comparing the sequence elements.  The sorting is
  3298.      destructive, that means that the input sequence is modified to
  3299.      produce the sorted result.  This is a stable sort.
  3300.  
  3301.     stable-sort
  3302.  
  3303.  - Scheme Procedure: stable-sort items less
  3304.      Sort the sequence ITEMS, which may be a list or a vector. LESS is
  3305.      used for comparing the sequence elements.  This is a stable sort.
  3306.  
  3307.     sort-list!
  3308.  
  3309.  - Scheme Procedure: sort-list! items less
  3310.      Sort the list ITEMS, using LESS for comparing the list elements.
  3311.      The sorting is destructive, that means that the input list is
  3312.      modified to produce the sorted result.  This is a stable sort.
  3313.  
  3314.     sort-list
  3315.  
  3316.  - Scheme Procedure: sort-list items less
  3317.      Sort the list ITEMS, using LESS for comparing the list elements.
  3318.      This is a stable sort.
  3319.  
  3320.     source-properties
  3321.  
  3322.  - Scheme Procedure: source-properties obj
  3323.      Return the source property association list of OBJ.
  3324.  
  3325.     set-source-properties!
  3326.  
  3327.  - Scheme Procedure: set-source-properties! obj plist
  3328.      Install the association list PLIST as the source property list for
  3329.      OBJ.
  3330.  
  3331.     source-property
  3332.  
  3333.  - Scheme Procedure: source-property obj key
  3334.      Return the source property specified by KEY from OBJ's source
  3335.      property list.
  3336.  
  3337.     set-source-property!
  3338.  
  3339.  - Scheme Procedure: set-source-property! obj key datum
  3340.      Set the source property of object OBJ, which is specified by KEY
  3341.      to DATUM.  Normally, the key will be a symbol.
  3342.  
  3343.     stack?
  3344.  
  3345.  - Scheme Procedure: stack? obj
  3346.      Return `#t' if OBJ is a calling stack.
  3347.  
  3348.     make-stack
  3349.  
  3350.  - Scheme Procedure: make-stack obj . args
  3351.      Create a new stack. If OBJ is `#t', the current evaluation stack
  3352.      is used for creating the stack frames, otherwise the frames are
  3353.      taken from OBJ (which must be either a debug object or a
  3354.      continuation).
  3355.  
  3356.      ARGS should be a list containing any combination of integer,
  3357.      procedure and `#t' values.
  3358.  
  3359.      These values specify various ways of cutting away uninteresting
  3360.      stack frames from the top and bottom of the stack that
  3361.      `make-stack' returns.  They come in pairs like this: `(INNER_CUT_1
  3362.      OUTER_CUT_1 INNER_CUT_2 OUTER_CUT_2 ...)'.
  3363.  
  3364.      Each INNER_CUT_N can be `#t', an integer, or a procedure.  `#t'
  3365.      means to cut away all frames up to but excluding the first user
  3366.      module frame.  An integer means to cut away exactly that number of
  3367.      frames.  A procedure means to cut away all frames up to but
  3368.      excluding the application frame whose procedure matches the
  3369.      specified one.
  3370.  
  3371.      Each OUTER_CUT_N can be an integer or a procedure.  An integer
  3372.      means to cut away that number of frames.  A procedure means to cut
  3373.      away frames down to but excluding the application frame whose
  3374.      procedure matches the specified one.
  3375.  
  3376.      If the OUTER_CUT_N of the last pair is missing, it is taken as 0.
  3377.  
  3378.     stack-id
  3379.  
  3380.  - Scheme Procedure: stack-id stack
  3381.      Return the identifier given to STACK by `start-stack'.
  3382.  
  3383.     stack-ref
  3384.  
  3385.  - Scheme Procedure: stack-ref stack index
  3386.      Return the INDEX'th frame from STACK.
  3387.  
  3388.     stack-length
  3389.  
  3390.  - Scheme Procedure: stack-length stack
  3391.      Return the length of STACK.
  3392.  
  3393.     frame?
  3394.  
  3395.  - Scheme Procedure: frame? obj
  3396.      Return `#t' if OBJ is a stack frame.
  3397.  
  3398.     last-stack-frame
  3399.  
  3400.  - Scheme Procedure: last-stack-frame obj
  3401.      Return a stack which consists of a single frame, which is the last
  3402.      stack frame for OBJ. OBJ must be either a debug object or a
  3403.      continuation.
  3404.  
  3405.     frame-number
  3406.  
  3407.  - Scheme Procedure: frame-number frame
  3408.      Return the frame number of FRAME.
  3409.  
  3410.     frame-source
  3411.  
  3412.  - Scheme Procedure: frame-source frame
  3413.      Return the source of FRAME.
  3414.  
  3415.     frame-procedure
  3416.  
  3417.  - Scheme Procedure: frame-procedure frame
  3418.      Return the procedure for FRAME, or `#f' if no procedure is
  3419.      associated with FRAME.
  3420.  
  3421.     frame-arguments
  3422.  
  3423.  - Scheme Procedure: frame-arguments frame
  3424.      Return the arguments of FRAME.
  3425.  
  3426.     frame-previous
  3427.  
  3428.  - Scheme Procedure: frame-previous frame
  3429.      Return the previous frame of FRAME, or `#f' if FRAME is the first
  3430.      frame in its stack.
  3431.  
  3432.     frame-next
  3433.  
  3434.  - Scheme Procedure: frame-next frame
  3435.      Return the next frame of FRAME, or `#f' if FRAME is the last frame
  3436.      in its stack.
  3437.  
  3438.     frame-real?
  3439.  
  3440.  - Scheme Procedure: frame-real? frame
  3441.      Return `#t' if FRAME is a real frame.
  3442.  
  3443.     frame-procedure?
  3444.  
  3445.  - Scheme Procedure: frame-procedure? frame
  3446.      Return `#t' if a procedure is associated with FRAME.
  3447.  
  3448.     frame-evaluating-args?
  3449.  
  3450.  - Scheme Procedure: frame-evaluating-args? frame
  3451.      Return `#t' if FRAME contains evaluated arguments.
  3452.  
  3453.     frame-overflow?
  3454.  
  3455.  - Scheme Procedure: frame-overflow? frame
  3456.      Return `#t' if FRAME is an overflow frame.
  3457.  
  3458.     get-internal-real-time
  3459.  
  3460.  - Scheme Procedure: get-internal-real-time
  3461.      Return the number of time units since the interpreter was started.
  3462.  
  3463.     times
  3464.  
  3465.  - Scheme Procedure: times
  3466.      Return an object with information about real and processor time.
  3467.      The following procedures accept such an object as an argument and
  3468.      return a selected component:
  3469.  
  3470.     `tms:clock'
  3471.           The current real time, expressed as time units relative to an
  3472.           arbitrary base.
  3473.  
  3474.     `tms:utime'
  3475.           The CPU time units used by the calling process.
  3476.  
  3477.     `tms:stime'
  3478.           The CPU time units used by the system on behalf of the calling
  3479.           process.
  3480.  
  3481.     `tms:cutime'
  3482.           The CPU time units used by terminated child processes of the
  3483.           calling process, whose status has been collected (e.g., using
  3484.           `waitpid').
  3485.  
  3486.     `tms:cstime'
  3487.           Similarly, the CPU times units used by the system on behalf of
  3488.           terminated child processes.
  3489.  
  3490.     get-internal-run-time
  3491.  
  3492.  - Scheme Procedure: get-internal-run-time
  3493.      Return the number of time units of processor time used by the
  3494.      interpreter.  Both _system_ and _user_ time are included but
  3495.      subprocesses are not.
  3496.  
  3497.     current-time
  3498.  
  3499.  - Scheme Procedure: current-time
  3500.      Return the number of seconds since 1970-01-01 00:00:00 UTC,
  3501.      excluding leap seconds.
  3502.  
  3503.     gettimeofday
  3504.  
  3505.  - Scheme Procedure: gettimeofday
  3506.      Return a pair containing the number of seconds and microseconds
  3507.      since 1970-01-01 00:00:00 UTC, excluding leap seconds.  Note:
  3508.      whether true microsecond resolution is available depends on the
  3509.      operating system.
  3510.  
  3511.     localtime
  3512.  
  3513.  - Scheme Procedure: localtime time [zone]
  3514.      Return an object representing the broken down components of TIME,
  3515.      an integer like the one returned by `current-time'.  The time zone
  3516.      for the calculation is optionally specified by ZONE (a string),
  3517.      otherwise the `TZ' environment variable or the system default is
  3518.      used.
  3519.  
  3520.     gmtime
  3521.  
  3522.  - Scheme Procedure: gmtime time
  3523.      Return an object representing the broken down components of TIME,
  3524.      an integer like the one returned by `current-time'.  The values
  3525.      are calculated for UTC.
  3526.  
  3527.     mktime
  3528.  
  3529.  - Scheme Procedure: mktime sbd_time [zone]
  3530.      BD-TIME is an object representing broken down time and `zone' is
  3531.      an optional time zone specifier (otherwise the TZ environment
  3532.      variable or the system default is used).
  3533.  
  3534.      Returns a pair: the car is a corresponding integer time value like
  3535.      that returned by `current-time'; the cdr is a broken down time
  3536.      object, similar to as BD-TIME but with normalized values.
  3537.  
  3538.     tzset
  3539.  
  3540.  - Scheme Procedure: tzset
  3541.      Initialize the timezone from the TZ environment variable or the
  3542.      system default.  It's not usually necessary to call this procedure
  3543.      since it's done automatically by other procedures that depend on
  3544.      the timezone.
  3545.  
  3546.     strftime
  3547.  
  3548.  - Scheme Procedure: strftime format stime
  3549.      Formats a time specification TIME using TEMPLATE.  TIME is an
  3550.      object with time components in the form returned by `localtime' or
  3551.      `gmtime'.  TEMPLATE is a string which can include formatting
  3552.      specifications introduced by a `%' character.  The formatting of
  3553.      month and day names is dependent on the current locale.  The value
  3554.      returned is the formatted string.  *Note Formatting Date and Time:
  3555.      (libc)Formatting Date and Time.)
  3556.  
  3557.     strptime
  3558.  
  3559.  - Scheme Procedure: strptime format string
  3560.      Performs the reverse action to `strftime', parsing STRING
  3561.      according to the specification supplied in TEMPLATE.  The
  3562.      interpretation of month and day names is dependent on the current
  3563.      locale.  The value returned is a pair.  The car has an object with
  3564.      time components in the form returned by `localtime' or `gmtime',
  3565.      but the time zone components are not usefully set.  The cdr
  3566.      reports the number of characters from STRING which were used for
  3567.      the conversion.
  3568.  
  3569.     string?
  3570.  
  3571.  - Scheme Procedure: string? obj
  3572.      Return `#t' if OBJ is a string, else `#f'.
  3573.  
  3574.     read-only-string?
  3575.  
  3576.  - Scheme Procedure: read-only-string? obj
  3577.      Return `#t' if OBJ is either a string or a symbol, otherwise
  3578.      return `#f'.
  3579.  
  3580.     list->string
  3581.  
  3582.  - Scheme Procedure: list->string
  3583.      implemented by the C function "scm_string"
  3584.  
  3585.     string
  3586.  
  3587.  - Scheme Procedure: string . chrs
  3588.  - Scheme Procedure: list->string chrs
  3589.      Return a newly allocated string composed of the arguments, CHRS.
  3590.  
  3591.     make-string
  3592.  
  3593.  - Scheme Procedure: make-string k [chr]
  3594.      Return a newly allocated string of length K.  If CHR is given,
  3595.      then all elements of the string are initialized to CHR, otherwise
  3596.      the contents of the STRING are unspecified.
  3597.  
  3598.     string-length
  3599.  
  3600.  - Scheme Procedure: string-length string
  3601.      Return the number of characters in STRING.
  3602.  
  3603.     string-ref
  3604.  
  3605.  - Scheme Procedure: string-ref str k
  3606.      Return character K of STR using zero-origin indexing. K must be a
  3607.      valid index of STR.
  3608.  
  3609.     string-set!
  3610.  
  3611.  - Scheme Procedure: string-set! str k chr
  3612.      Store CHR in element K of STR and return an unspecified value. K
  3613.      must be a valid index of STR.
  3614.  
  3615.     substring
  3616.  
  3617.  - Scheme Procedure: substring str start [end]
  3618.      Return a newly allocated string formed from the characters of STR
  3619.      beginning with index START (inclusive) and ending with index END
  3620.      (exclusive).  STR must be a string, START and END must be exact
  3621.      integers satisfying:
  3622.  
  3623.      0 <= START <= END <= (string-length STR).
  3624.  
  3625.     string-append
  3626.  
  3627.  - Scheme Procedure: string-append . args
  3628.      Return a newly allocated string whose characters form the
  3629.      concatenation of the given strings, ARGS.
  3630.  
  3631.     make-shared-substring
  3632.  
  3633.  - Scheme Procedure: make-shared-substring str [start [end]]
  3634.      Return a shared substring of STR.  The arguments are the same as
  3635.      for the `substring' function: the shared substring returned
  3636.      includes all of the text from STR between indexes START
  3637.      (inclusive) and END (exclusive).  If END is omitted, it defaults
  3638.      to the end of STR.  The shared substring returned by
  3639.      `make-shared-substring' occupies the same storage space as STR.
  3640.  
  3641.     string-index
  3642.  
  3643.  - Scheme Procedure: string-index str chr [frm [to]]
  3644.      Return the index of the first occurrence of CHR in STR.  The
  3645.      optional integer arguments FRM and TO limit the search to a
  3646.      portion of the string.  This procedure essentially implements the
  3647.      `index' or `strchr' functions from the C library.
  3648.  
  3649.           (string-index "weiner" #\e)
  3650.           => 1
  3651.           
  3652.           (string-index "weiner" #\e 2)
  3653.           => 4
  3654.           
  3655.           (string-index "weiner" #\e 2 4)
  3656.           => #f
  3657.  
  3658.     string-rindex
  3659.  
  3660.  - Scheme Procedure: string-rindex str chr [frm [to]]
  3661.      Like `string-index', but search from the right of the string
  3662.      rather than from the left.  This procedure essentially implements
  3663.      the `rindex' or `strrchr' functions from the C library.
  3664.  
  3665.           (string-rindex "weiner" #\e)
  3666.           => 4
  3667.           
  3668.           (string-rindex "weiner" #\e 2 4)
  3669.           => #f
  3670.           
  3671.           (string-rindex "weiner" #\e 2 5)
  3672.           => 4
  3673.  
  3674.     substring-move-left!
  3675.  
  3676.  - Scheme Procedure: substring-move-left!
  3677.      implemented by the C function "scm_substring_move_x"
  3678.  
  3679.     substring-move-right!
  3680.  
  3681.  - Scheme Procedure: substring-move-right!
  3682.      implemented by the C function "scm_substring_move_x"
  3683.  
  3684.     substring-move!
  3685.  
  3686.  - Scheme Procedure: substring-move! str1 start1 end1 str2 start2
  3687.      Copy the substring of STR1 bounded by START1 and END1 into STR2
  3688.      beginning at position START2.  STR1 and STR2 can be the same
  3689.      string.
  3690.  
  3691.     substring-fill!
  3692.  
  3693.  - Scheme Procedure: substring-fill! str start end fill
  3694.      Change every character in STR between START and END to FILL.
  3695.  
  3696.           (define y "abcdefg")
  3697.           (substring-fill! y 1 3 #\r)
  3698.           y
  3699.           => "arrdefg"
  3700.  
  3701.     string-null?
  3702.  
  3703.  - Scheme Procedure: string-null? str
  3704.      Return `#t' if STR's length is zero, and `#f' otherwise.
  3705.           (string-null? "")  => #t
  3706.           y                    => "foo"
  3707.           (string-null? y)     => #f
  3708.  
  3709.     string->list
  3710.  
  3711.  - Scheme Procedure: string->list str
  3712.      Return a newly allocated list of the characters that make up the
  3713.      given string STR. `string->list' and `list->string' are inverses
  3714.      as far as `equal?' is concerned.
  3715.  
  3716.     string-copy
  3717.  
  3718.  - Scheme Procedure: string-copy str
  3719.      Return a newly allocated copy of the given STRING.
  3720.  
  3721.     string-fill!
  3722.  
  3723.  - Scheme Procedure: string-fill! str chr
  3724.      Store CHAR in every element of the given STRING and return an
  3725.      unspecified value.
  3726.  
  3727.     string-upcase!
  3728.  
  3729.  - Scheme Procedure: string-upcase! str
  3730.      Destructively upcase every character in STR and return STR.
  3731.           y                  => "arrdefg"
  3732.           (string-upcase! y) => "ARRDEFG"
  3733.           y                  => "ARRDEFG"
  3734.  
  3735.     string-upcase
  3736.  
  3737.  - Scheme Procedure: string-upcase str
  3738.      Return a freshly allocated string containing the characters of STR
  3739.      in upper case.
  3740.  
  3741.     string-downcase!
  3742.  
  3743.  - Scheme Procedure: string-downcase! str
  3744.      Destructively downcase every character in STR and return STR.
  3745.           y                     => "ARRDEFG"
  3746.           (string-downcase! y)  => "arrdefg"
  3747.           y                     => "arrdefg"
  3748.  
  3749.     string-downcase
  3750.  
  3751.  - Scheme Procedure: string-downcase str
  3752.      Return a freshly allocation string containing the characters in
  3753.      STR in lower case.
  3754.  
  3755.     string-capitalize!
  3756.  
  3757.  - Scheme Procedure: string-capitalize! str
  3758.      Upcase the first character of every word in STR destructively and
  3759.      return STR.
  3760.  
  3761.           y                      => "hello world"
  3762.           (string-capitalize! y) => "Hello World"
  3763.           y                      => "Hello World"
  3764.  
  3765.     string-capitalize
  3766.  
  3767.  - Scheme Procedure: string-capitalize str
  3768.      Return a freshly allocated string with the characters in STR,
  3769.      where the first character of every word is capitalized.
  3770.  
  3771.     string-split
  3772.  
  3773.  - Scheme Procedure: string-split str chr
  3774.      Split the string STR into the a list of the substrings delimited
  3775.      by appearances of the character CHR.  Note that an empty substring
  3776.      between separator characters will result in an empty string in the
  3777.      result list.
  3778.  
  3779.           (string-split "root:x:0:0:root:/root:/bin/bash" #\:)
  3780.           =>
  3781.           ("root" "x" "0" "0" "root" "/root" "/bin/bash")
  3782.           
  3783.           (string-split "::" #\:)
  3784.           =>
  3785.           ("" "" "")
  3786.           
  3787.           (string-split "" #\:)
  3788.           =>
  3789.           ("")
  3790.  
  3791.     string-ci->symbol
  3792.  
  3793.  - Scheme Procedure: string-ci->symbol str
  3794.      Return the symbol whose name is STR.  STR is converted to
  3795.      lowercase before the conversion is done, if Guile is currently
  3796.      reading symbols case-insensitively.
  3797.  
  3798.     string=?
  3799.  
  3800.  - Scheme Procedure: string=? s1 s2
  3801.      Lexicographic equality predicate; return `#t' if the two strings
  3802.      are the same length and contain the same characters in the same
  3803.      positions, otherwise return `#f'.
  3804.  
  3805.      The procedure `string-ci=?' treats upper and lower case letters as
  3806.      though they were the same character, but `string=?' treats upper
  3807.      and lower case as distinct characters.
  3808.  
  3809.     string-ci=?
  3810.  
  3811.  - Scheme Procedure: string-ci=? s1 s2
  3812.      Case-insensitive string equality predicate; return `#t' if the two
  3813.      strings are the same length and their component characters match
  3814.      (ignoring case) at each position; otherwise return `#f'.
  3815.  
  3816.     string<?
  3817.  
  3818.  - Scheme Procedure: string<? s1 s2
  3819.      Lexicographic ordering predicate; return `#t' if S1 is
  3820.      lexicographically less than S2.
  3821.  
  3822.     string<=?
  3823.  
  3824.  - Scheme Procedure: string<=? s1 s2
  3825.      Lexicographic ordering predicate; return `#t' if S1 is
  3826.      lexicographically less than or equal to S2.
  3827.  
  3828.     string>?
  3829.  
  3830.  - Scheme Procedure: string>? s1 s2
  3831.      Lexicographic ordering predicate; return `#t' if S1 is
  3832.      lexicographically greater than S2.
  3833.  
  3834.     string>=?
  3835.  
  3836.  - Scheme Procedure: string>=? s1 s2
  3837.      Lexicographic ordering predicate; return `#t' if S1 is
  3838.      lexicographically greater than or equal to S2.
  3839.  
  3840.     string-ci<?
  3841.  
  3842.  - Scheme Procedure: string-ci<? s1 s2
  3843.      Case insensitive lexicographic ordering predicate; return `#t' if
  3844.      S1 is lexicographically less than S2 regardless of case.
  3845.  
  3846.     string-ci<=?
  3847.  
  3848.  - Scheme Procedure: string-ci<=? s1 s2
  3849.      Case insensitive lexicographic ordering predicate; return `#t' if
  3850.      S1 is lexicographically less than or equal to S2 regardless of
  3851.      case.
  3852.  
  3853.     string-ci>?
  3854.  
  3855.  - Scheme Procedure: string-ci>? s1 s2
  3856.      Case insensitive lexicographic ordering predicate; return `#t' if
  3857.      S1 is lexicographically greater than S2 regardless of case.
  3858.  
  3859.     string-ci>=?
  3860.  
  3861.  - Scheme Procedure: string-ci>=? s1 s2
  3862.      Case insensitive lexicographic ordering predicate; return `#t' if
  3863.      S1 is lexicographically greater than or equal to S2 regardless of
  3864.      case.
  3865.  
  3866.     object->string
  3867.  
  3868.  - Scheme Procedure: object->string obj [printer]
  3869.      Return a Scheme string obtained by printing OBJ.  Printing
  3870.      function can be specified by the optional second argument PRINTER
  3871.      (default: `write').
  3872.  
  3873.     call-with-output-string
  3874.  
  3875.  - Scheme Procedure: call-with-output-string proc
  3876.      Calls the one-argument procedure PROC with a newly created output
  3877.      port.  When the function returns, the string composed of the
  3878.      characters written into the port is returned.
  3879.  
  3880.     call-with-input-string
  3881.  
  3882.  - Scheme Procedure: call-with-input-string string proc
  3883.      Calls the one-argument procedure PROC with a newly created input
  3884.      port from which STRING's contents may be read.  The value yielded
  3885.      by the PROC is returned.
  3886.  
  3887.     open-input-string
  3888.  
  3889.  - Scheme Procedure: open-input-string str
  3890.      Take a string and return an input port that delivers characters
  3891.      from the string. The port can be closed by `close-input-port',
  3892.      though its storage will be reclaimed by the garbage collector if
  3893.      it becomes inaccessible.
  3894.  
  3895.     open-output-string
  3896.  
  3897.  - Scheme Procedure: open-output-string
  3898.      Return an output port that will accumulate characters for
  3899.      retrieval by `get-output-string'. The port can be closed by the
  3900.      procedure `close-output-port', though its storage will be
  3901.      reclaimed by the garbage collector if it becomes inaccessible.
  3902.  
  3903.     get-output-string
  3904.  
  3905.  - Scheme Procedure: get-output-string port
  3906.      Given an output port created by `open-output-string', return a
  3907.      string consisting of the characters that have been output to the
  3908.      port so far.
  3909.  
  3910.     eval-string
  3911.  
  3912.  - Scheme Procedure: eval-string string
  3913.      Evaluate STRING as the text representation of a Scheme form or
  3914.      forms, and return whatever value they produce.  Evaluation takes
  3915.      place in the environment returned by the procedure
  3916.      `interaction-environment'.
  3917.  
  3918.     make-struct-layout
  3919.  
  3920.  - Scheme Procedure: make-struct-layout fields
  3921.      Return a new structure layout object.
  3922.  
  3923.      FIELDS must be a string made up of pairs of characters strung
  3924.      together.  The first character of each pair describes a field
  3925.      type, the second a field protection.  Allowed types are 'p' for
  3926.      GC-protected Scheme data, 'u' for unprotected binary data, and 's'
  3927.      for a field that points to the structure itself.    Allowed
  3928.      protections are 'w' for mutable fields, 'r' for read-only fields,
  3929.      and 'o' for opaque fields.  The last field protection
  3930.      specification may be capitalized to indicate that the field is a
  3931.      tail-array.
  3932.  
  3933.     struct?
  3934.  
  3935.  - Scheme Procedure: struct? x
  3936.      Return `#t' iff X is a structure object, else `#f'.
  3937.  
  3938.     struct-vtable?
  3939.  
  3940.  - Scheme Procedure: struct-vtable? x
  3941.      Return `#t' iff X is a vtable structure.
  3942.  
  3943.     make-struct
  3944.  
  3945.  - Scheme Procedure: make-struct vtable tail_array_size . init
  3946.      Create a new structure.
  3947.  
  3948.      TYPE must be a vtable structure (*note Vtables::).
  3949.  
  3950.      TAIL-ELTS must be a non-negative integer.  If the layout
  3951.      specification indicated by TYPE includes a tail-array, this is the
  3952.      number of elements allocated to that array.
  3953.  
  3954.      The INIT1, ... are optional arguments describing how successive
  3955.      fields of the structure should be initialized.  Only fields with
  3956.      protection 'r' or 'w' can be initialized, except for fields of
  3957.      type 's', which are automatically initialized to point to the new
  3958.      structure itself; fields with protection 'o' can not be
  3959.      initialized by Scheme programs.
  3960.  
  3961.      If fewer optional arguments than initializable fields are supplied,
  3962.      fields of type 'p' get default value #f while fields of type 'u'
  3963.      are initialized to 0.
  3964.  
  3965.      Structs are currently the basic representation for record-like data
  3966.      structures in Guile.  The plan is to eventually replace them with a
  3967.      new representation which will at the same time be easier to use and
  3968.      more powerful.
  3969.  
  3970.      For more information, see the documentation for
  3971.      `make-vtable-vtable'.
  3972.  
  3973.     make-vtable-vtable
  3974.  
  3975.  - Scheme Procedure: make-vtable-vtable user_fields tail_array_size .
  3976.           init
  3977.      Return a new, self-describing vtable structure.
  3978.  
  3979.      USER-FIELDS is a string describing user defined fields of the
  3980.      vtable beginning at index `vtable-offset-user' (see
  3981.      `make-struct-layout').
  3982.  
  3983.      TAIL-SIZE specifies the size of the tail-array (if any) of this
  3984.      vtable.
  3985.  
  3986.      INIT1, ... are the optional initializers for the fields of the
  3987.      vtable.
  3988.  
  3989.      Vtables have one initializable system field--the struct printer.
  3990.      This field comes before the user fields in the initializers passed
  3991.      to `make-vtable-vtable' and `make-struct', and thus works as a
  3992.      third optional argument to `make-vtable-vtable' and a fourth to
  3993.      `make-struct' when creating vtables:
  3994.  
  3995.      If the value is a procedure, it will be called instead of the
  3996.      standard printer whenever a struct described by this vtable is
  3997.      printed.  The procedure will be called with arguments STRUCT and
  3998.      PORT.
  3999.  
  4000.      The structure of a struct is described by a vtable, so the vtable
  4001.      is in essence the type of the struct.  The vtable is itself a
  4002.      struct with a vtable.  This could go on forever if it weren't for
  4003.      the vtable-vtables which are self-describing vtables, and thus
  4004.      terminate the chain.
  4005.  
  4006.      There are several potential ways of using structs, but the standard
  4007.      one is to use three kinds of structs, together building up a type
  4008.      sub-system: one vtable-vtable working as the root and one or
  4009.      several "types", each with a set of "instances".  (The
  4010.      vtable-vtable should be compared to the class <class> which is the
  4011.      class of itself.)
  4012.  
  4013.           (define ball-root (make-vtable-vtable "pr" 0))
  4014.           
  4015.           (define (make-ball-type ball-color)
  4016.             (make-struct ball-root 0
  4017.                      (make-struct-layout "pw")
  4018.                          (lambda (ball port)
  4019.                            (format port "#<a ~A ball owned by ~A>"
  4020.                                    (color ball)
  4021.                                    (owner ball)))
  4022.                          ball-color))
  4023.           (define (color ball) (struct-ref (struct-vtable ball) vtable-offset-user))
  4024.           (define (owner ball) (struct-ref ball 0))
  4025.           
  4026.           (define red (make-ball-type 'red))
  4027.           (define green (make-ball-type 'green))
  4028.           
  4029.           (define (make-ball type owner) (make-struct type 0 owner))
  4030.           
  4031.           (define ball (make-ball green 'Nisse))
  4032.           ball => #<a green ball owned by Nisse>
  4033.  
  4034.     struct-ref
  4035.  
  4036.  - Scheme Procedure: struct-ref handle pos
  4037.  - Scheme Procedure: struct-set! struct n value
  4038.      Access (or modify) the Nth field of STRUCT.
  4039.  
  4040.      If the field is of type 'p', then it can be set to an arbitrary
  4041.      value.
  4042.  
  4043.      If the field is of type 'u', then it can only be set to a
  4044.      non-negative integer value small enough to fit in one machine word.
  4045.  
  4046.     struct-set!
  4047.  
  4048.  - Scheme Procedure: struct-set! handle pos val
  4049.      Set the slot of the structure HANDLE with index POS to VAL.
  4050.      Signal an error if the slot can not be written to.
  4051.  
  4052.     struct-vtable
  4053.  
  4054.  - Scheme Procedure: struct-vtable handle
  4055.      Return the vtable structure that describes the type of STRUCT.
  4056.  
  4057.     struct-vtable-tag
  4058.  
  4059.  - Scheme Procedure: struct-vtable-tag handle
  4060.      Return the vtable tag of the structure HANDLE.
  4061.  
  4062.     struct-vtable-name
  4063.  
  4064.  - Scheme Procedure: struct-vtable-name vtable
  4065.      Return the name of the vtable VTABLE.
  4066.  
  4067.     set-struct-vtable-name!
  4068.  
  4069.  - Scheme Procedure: set-struct-vtable-name! vtable name
  4070.      Set the name of the vtable VTABLE to NAME.
  4071.  
  4072.     symbol?
  4073.  
  4074.  - Scheme Procedure: symbol? obj
  4075.      Return `#t' if OBJ is a symbol, otherwise return `#f'.
  4076.  
  4077.     symbol->string
  4078.  
  4079.  - Scheme Procedure: symbol->string s
  4080.      Return the name of SYMBOL as a string.  If the symbol was part of
  4081.      an object returned as the value of a literal expression (section
  4082.      *note Literal expressions: (r5rs)Literal expressions.) or by a
  4083.      call to the `read' procedure, and its name contains alphabetic
  4084.      characters, then the string returned will contain characters in
  4085.      the implementation's preferred standard case--some implementations
  4086.      will prefer upper case, others lower case.  If the symbol was
  4087.      returned by `string->symbol', the case of characters in the string
  4088.      returned will be the same as the case in the string that was
  4089.      passed to `string->symbol'.  It is an error to apply mutation
  4090.      procedures like `string-set!' to strings returned by this
  4091.      procedure.
  4092.  
  4093.      The following examples assume that the implementation's standard
  4094.      case is lower case:
  4095.  
  4096.           (symbol->string 'flying-fish)    => "flying-fish"
  4097.           (symbol->string 'Martin)         =>  "martin"
  4098.           (symbol->string
  4099.              (string->symbol "Malvina")) => "Malvina"
  4100.  
  4101.     string->symbol
  4102.  
  4103.  - Scheme Procedure: string->symbol string
  4104.      Return the symbol whose name is STRING. This procedure can create
  4105.      symbols with names containing special characters or letters in the
  4106.      non-standard case, but it is usually a bad idea to create such
  4107.      symbols because in some implementations of Scheme they cannot be
  4108.      read as themselves.  See `symbol->string'.
  4109.  
  4110.      The following examples assume that the implementation's standard
  4111.      case is lower case:
  4112.  
  4113.           (eq? 'mISSISSIppi 'mississippi) => #t
  4114.           (string->symbol "mISSISSIppi") => the symbol with name "mISSISSIppi"
  4115.           (eq? 'bitBlt (string->symbol "bitBlt")) => #f
  4116.           (eq? 'JollyWog
  4117.             (string->symbol (symbol->string 'JollyWog))) => #t
  4118.           (string=? "K. Harper, M.D."
  4119.             (symbol->string
  4120.               (string->symbol "K. Harper, M.D."))) =>#t
  4121.  
  4122.     gensym
  4123.  
  4124.  - Scheme Procedure: gensym [prefix]
  4125.      Create a new symbol with a name constructed from a prefix and a
  4126.      counter value. The string PREFIX can be specified as an optional
  4127.      argument. Default prefix is ` g'.  The counter is increased by 1
  4128.      at each call. There is no provision for resetting the counter.
  4129.  
  4130.     symbol-hash
  4131.  
  4132.  - Scheme Procedure: symbol-hash symbol
  4133.      Return a hash value for SYMBOL.
  4134.  
  4135.     symbol-fref
  4136.  
  4137.  - Scheme Procedure: symbol-fref s
  4138.      Return the contents of SYMBOL's "function slot".
  4139.  
  4140.     symbol-pref
  4141.  
  4142.  - Scheme Procedure: symbol-pref s
  4143.      Return the "property list" currently associated with SYMBOL.
  4144.  
  4145.     symbol-fset!
  4146.  
  4147.  - Scheme Procedure: symbol-fset! s val
  4148.      Change the binding of SYMBOL's function slot.
  4149.  
  4150.     symbol-pset!
  4151.  
  4152.  - Scheme Procedure: symbol-pset! s val
  4153.      Change the binding of SYMBOL's property slot.
  4154.  
  4155.     catch
  4156.  
  4157.  - Scheme Procedure: catch key thunk handler
  4158.      Invoke THUNK in the dynamic context of HANDLER for exceptions
  4159.      matching KEY.  If thunk throws to the symbol KEY, then HANDLER is
  4160.      invoked this way:
  4161.           (handler key args ...)
  4162.  
  4163.      KEY is a symbol or `#t'.
  4164.  
  4165.      THUNK takes no arguments.  If THUNK returns normally, that is the
  4166.      return value of `catch'.
  4167.  
  4168.      Handler is invoked outside the scope of its own `catch'.  If
  4169.      HANDLER again throws to the same key, a new handler from further
  4170.      up the call chain is invoked.
  4171.  
  4172.      If the key is `#t', then a throw to _any_ symbol will match this
  4173.      call to `catch'.
  4174.  
  4175.     lazy-catch
  4176.  
  4177.  - Scheme Procedure: lazy-catch key thunk handler
  4178.      This behaves exactly like `catch', except that it does not unwind
  4179.      the stack before invoking HANDLER.  The HANDLER procedure is not
  4180.      allowed to return: it must throw to another catch, or otherwise
  4181.      exit non-locally.
  4182.  
  4183.     throw
  4184.  
  4185.  - Scheme Procedure: throw key . args
  4186.      Invoke the catch form matching KEY, passing ARGS to the HANDLER.
  4187.  
  4188.      KEY is a symbol.  It will match catches of the same symbol or of
  4189.      `#t'.
  4190.  
  4191.      If there is no handler at all, Guile prints an error and then
  4192.      exits.
  4193.  
  4194.     values
  4195.  
  4196.  - Scheme Procedure: values . args
  4197.      Delivers all of its arguments to its continuation.  Except for
  4198.      continuations created by the `call-with-values' procedure, all
  4199.      continuations take exactly one value.  The effect of passing no
  4200.      value or more than one value to continuations that were not
  4201.      created by `call-with-values' is unspecified.
  4202.  
  4203.     make-variable
  4204.  
  4205.  - Scheme Procedure: make-variable init
  4206.      Return a variable initialized to value INIT.
  4207.  
  4208.     make-undefined-variable
  4209.  
  4210.  - Scheme Procedure: make-undefined-variable
  4211.      Return a variable that is initially unbound.
  4212.  
  4213.     variable?
  4214.  
  4215.  - Scheme Procedure: variable? obj
  4216.      Return `#t' iff OBJ is a variable object, else return `#f'.
  4217.  
  4218.     variable-ref
  4219.  
  4220.  - Scheme Procedure: variable-ref var
  4221.      Dereference VAR and return its value.  VAR must be a variable
  4222.      object; see `make-variable' and `make-undefined-variable'.
  4223.  
  4224.     variable-set!
  4225.  
  4226.  - Scheme Procedure: variable-set! var val
  4227.      Set the value of the variable VAR to VAL.  VAR must be a variable
  4228.      object, VAL can be any value. Return an unspecified value.
  4229.  
  4230.     variable-bound?
  4231.  
  4232.  - Scheme Procedure: variable-bound? var
  4233.      Return `#t' iff VAR is bound to a value.  Throws an error if VAR
  4234.      is not a variable object.
  4235.  
  4236.     variable-set-name-hint!
  4237.  
  4238.  - Scheme Procedure: variable-set-name-hint! var hint
  4239.      Do not use this function.
  4240.  
  4241.     builtin-variable
  4242.  
  4243.  - Scheme Procedure: builtin-variable name
  4244.      Return the built-in variable with the name NAME.  NAME must be a
  4245.      symbol (not a string).  Then use `variable-ref' to access its
  4246.      value.
  4247.  
  4248.     vector?
  4249.  
  4250.  - Scheme Procedure: vector? obj
  4251.      Return `#t' if OBJ is a vector, otherwise return `#f'.
  4252.  
  4253.     list->vector
  4254.  
  4255.  - Scheme Procedure: list->vector
  4256.      implemented by the C function "scm_vector"
  4257.  
  4258.     vector
  4259.  
  4260.  - Scheme Procedure: vector . l
  4261.  - Scheme Procedure: list->vector l
  4262.      Return a newly allocated vector whose elements contain the given
  4263.      arguments.  Analogous to `list'.
  4264.  
  4265.           (vector 'a 'b 'c) => #(a b c)
  4266.  
  4267.     make-vector
  4268.  
  4269.  - Scheme Procedure: make-vector k [fill]
  4270.      Return a newly allocated vector of K elements.  If a second
  4271.      argument is given, then each element is initialized to FILL.
  4272.      Otherwise the initial contents of each element is unspecified.
  4273.  
  4274.     vector->list
  4275.  
  4276.  - Scheme Procedure: vector->list v
  4277.      Return a newly allocated list of the objects contained in the
  4278.      elements of VECTOR.
  4279.  
  4280.           (vector->list '#(dah dah didah)) =>  (dah dah didah)
  4281.           (list->vector '(dididit dah)) =>  #(dididit dah)
  4282.  
  4283.     vector-fill!
  4284.  
  4285.  - Scheme Procedure: vector-fill! v fill
  4286.      Store FILL in every element of VECTOR.  The value returned by
  4287.      `vector-fill!' is unspecified.
  4288.  
  4289.     vector-move-left!
  4290.  
  4291.  - Scheme Procedure: vector-move-left! vec1 start1 end1 vec2 start2
  4292.      Copy elements from VEC1, positions START1 to END1, to VEC2
  4293.      starting at position START2.  START1 and START2 are inclusive
  4294.      indices; END1 is exclusive.
  4295.  
  4296.      `vector-move-left!' copies elements in leftmost order.  Therefore,
  4297.      in the case where VEC1 and VEC2 refer to the same vector,
  4298.      `vector-move-left!' is usually appropriate when START1 is greater
  4299.      than START2.
  4300.  
  4301.     vector-move-right!
  4302.  
  4303.  - Scheme Procedure: vector-move-right! vec1 start1 end1 vec2 start2
  4304.      Copy elements from VEC1, positions START1 to END1, to VEC2
  4305.      starting at position START2.  START1 and START2 are inclusive
  4306.      indices; END1 is exclusive.
  4307.  
  4308.      `vector-move-right!' copies elements in rightmost order.
  4309.      Therefore, in the case where VEC1 and VEC2 refer to the same
  4310.      vector, `vector-move-right!' is usually appropriate when START1 is
  4311.      less than START2.
  4312.  
  4313.     major-version
  4314.  
  4315.  - Scheme Procedure: major-version
  4316.      Return a string containing Guile's major version number.  E.g.,
  4317.      the 1 in "1.6.5".
  4318.  
  4319.     minor-version
  4320.  
  4321.  - Scheme Procedure: minor-version
  4322.      Return a string containing Guile's minor version number.  E.g.,
  4323.      the 6 in "1.6.5".
  4324.  
  4325.     micro-version
  4326.  
  4327.  - Scheme Procedure: micro-version
  4328.      Return a string containing Guile's micro version number.  E.g.,
  4329.      the 5 in "1.6.5".
  4330.  
  4331.     version
  4332.  
  4333.  - Scheme Procedure: version
  4334.  - Scheme Procedure: major-version
  4335.  - Scheme Procedure: minor-version
  4336.  - Scheme Procedure: micro-version
  4337.      Return a string describing Guile's version number, or its major,
  4338.      minor or micro version number, respectively.
  4339.  
  4340.           (version) => "1.6.0"
  4341.           (major-version) => "1"
  4342.           (minor-version) => "6"
  4343.           (micro-version) => "0"
  4344.  
  4345.     make-soft-port
  4346.  
  4347.  - Scheme Procedure: make-soft-port pv modes
  4348.      Return a port capable of receiving or delivering characters as
  4349.      specified by the MODES string (*note open-file: File Ports.).  PV
  4350.      must be a vector of length 5.  Its components are as follows:
  4351.  
  4352.        0. procedure accepting one character for output
  4353.  
  4354.        1. procedure accepting a string for output
  4355.  
  4356.        2. thunk for flushing output
  4357.  
  4358.        3. thunk for getting one character
  4359.  
  4360.        4. thunk for closing port (not by garbage collection)
  4361.  
  4362.      For an output-only port only elements 0, 1, 2, and 4 need be
  4363.      procedures.  For an input-only port only elements 3 and 4 need be
  4364.      procedures.  Thunks 2 and 4 can instead be `#f' if there is no
  4365.      useful operation for them to perform.
  4366.  
  4367.      If thunk 3 returns `#f' or an `eof-object' (*note eof-object?:
  4368.      (r5rs)Input.) it indicates that the port has reached end-of-file.
  4369.      For example:
  4370.  
  4371.           (define stdout (current-output-port))
  4372.           (define p (make-soft-port
  4373.                      (vector
  4374.                       (lambda (c) (write c stdout))
  4375.                       (lambda (s) (display s stdout))
  4376.                       (lambda () (display "." stdout))
  4377.                       (lambda () (char-upcase (read-char)))
  4378.                       (lambda () (display "@" stdout)))
  4379.                      "rw"))
  4380.           
  4381.           (write p p) => #<input-output: soft 8081e20>
  4382.  
  4383.     make-weak-vector
  4384.  
  4385.  - Scheme Procedure: make-weak-vector size [fill]
  4386.      Return a weak vector with SIZE elements. If the optional argument
  4387.      FILL is given, all entries in the vector will be set to FILL. The
  4388.      default value for FILL is the empty list.
  4389.  
  4390.     list->weak-vector
  4391.  
  4392.  - Scheme Procedure: list->weak-vector
  4393.      implemented by the C function "scm_weak_vector"
  4394.  
  4395.     weak-vector
  4396.  
  4397.  - Scheme Procedure: weak-vector . l
  4398.  - Scheme Procedure: list->weak-vector l
  4399.      Construct a weak vector from a list: `weak-vector' uses the list
  4400.      of its arguments while `list->weak-vector' uses its only argument
  4401.      L (a list) to construct a weak vector the same way `list->vector'
  4402.      would.
  4403.  
  4404.     weak-vector?
  4405.  
  4406.  - Scheme Procedure: weak-vector? obj
  4407.      Return `#t' if OBJ is a weak vector. Note that all weak hashes are
  4408.      also weak vectors.
  4409.  
  4410.     make-weak-key-hash-table
  4411.  
  4412.  - Scheme Procedure: make-weak-key-hash-table size
  4413.  - Scheme Procedure: make-weak-value-hash-table size
  4414.  - Scheme Procedure: make-doubly-weak-hash-table size
  4415.      Return a weak hash table with SIZE buckets. As with any hash
  4416.      table, choosing a good size for the table requires some caution.
  4417.  
  4418.      You can modify weak hash tables in exactly the same way you would
  4419.      modify regular hash tables. (*note Hash Tables::)
  4420.  
  4421.     make-weak-value-hash-table
  4422.  
  4423.  - Scheme Procedure: make-weak-value-hash-table size
  4424.      Return a hash table with weak values with SIZE buckets.  (*note
  4425.      Hash Tables::)
  4426.  
  4427.     make-doubly-weak-hash-table
  4428.  
  4429.  - Scheme Procedure: make-doubly-weak-hash-table size
  4430.      Return a hash table with weak keys and values with SIZE buckets.
  4431.      (*note Hash Tables::)
  4432.  
  4433.     weak-key-hash-table?
  4434.  
  4435.  - Scheme Procedure: weak-key-hash-table? obj
  4436.  - Scheme Procedure: weak-value-hash-table? obj
  4437.  - Scheme Procedure: doubly-weak-hash-table? obj
  4438.      Return `#t' if OBJ is the specified weak hash table. Note that a
  4439.      doubly weak hash table is neither a weak key nor a weak value hash
  4440.      table.
  4441.  
  4442.     weak-value-hash-table?
  4443.  
  4444.  - Scheme Procedure: weak-value-hash-table? obj
  4445.      Return `#t' if OBJ is a weak value hash table.
  4446.  
  4447.     doubly-weak-hash-table?
  4448.  
  4449.  - Scheme Procedure: doubly-weak-hash-table? obj
  4450.      Return `#t' if OBJ is a doubly weak hash table.
  4451.  
  4452.     string->obarray-symbol
  4453.  
  4454.  - Scheme Procedure: string->obarray-symbol o s [softp]
  4455.      Intern a new symbol in OBARRAY, a symbol table, with name STRING.
  4456.  
  4457.      If OBARRAY is `#f', use the default system symbol table.  If
  4458.      OBARRAY is `#t', the symbol should not be interned in any symbol
  4459.      table; merely return the pair (SYMBOL . #<UNDEFINED>).
  4460.  
  4461.      The SOFT? argument determines whether new symbol table entries
  4462.      should be created when the specified symbol is not already present
  4463.      in OBARRAY.  If SOFT? is specified and is a true value, then new
  4464.      entries should not be added for symbols not already present in the
  4465.      table; instead, simply return `#f'.
  4466.  
  4467.     intern-symbol
  4468.  
  4469.  - Scheme Procedure: intern-symbol o s
  4470.      Add a new symbol to OBARRAY with name STRING, bound to an
  4471.      unspecified initial value.  The symbol table is not modified if a
  4472.      symbol with this name is already present.
  4473.  
  4474.     unintern-symbol
  4475.  
  4476.  - Scheme Procedure: unintern-symbol o s
  4477.      Remove the symbol with name STRING from OBARRAY.  This function
  4478.      returns `#t' if the symbol was present and `#f' otherwise.
  4479.  
  4480.     symbol-binding
  4481.  
  4482.  - Scheme Procedure: symbol-binding o s
  4483.      Look up in OBARRAY the symbol whose name is STRING, and return the
  4484.      value to which it is bound.  If OBARRAY is `#f', use the global
  4485.      symbol table.  If STRING is not interned in OBARRAY, an error is
  4486.      signalled.
  4487.  
  4488.     symbol-interned?
  4489.  
  4490.  - Scheme Procedure: symbol-interned? o s
  4491.      Return `#t' if OBARRAY contains a symbol with name STRING, and
  4492.      `#f' otherwise.
  4493.  
  4494.     symbol-bound?
  4495.  
  4496.  - Scheme Procedure: symbol-bound? o s
  4497.      Return `#t' if OBARRAY contains a symbol with name STRING bound to
  4498.      a defined value.  This differs from SYMBOL-INTERNED? in that the
  4499.      mere mention of a symbol usually causes it to be interned;
  4500.      `symbol-bound?' determines whether a symbol has been given any
  4501.      meaningful value.
  4502.  
  4503.     symbol-set!
  4504.  
  4505.  - Scheme Procedure: symbol-set! o s v
  4506.      Find the symbol in OBARRAY whose name is STRING, and rebind it to
  4507.      VALUE.  An error is signalled if STRING is not present in OBARRAY.
  4508.  
  4509.     gentemp
  4510.  
  4511.  - Scheme Procedure: gentemp [prefix [obarray]]
  4512.      Create a new symbol with a name unique in an obarray.  The name is
  4513.      constructed from an optional string PREFIX and a counter value.
  4514.      The default prefix is `t'.  The OBARRAY is specified as a second
  4515.      optional argument.  Default is the system obarray where all normal
  4516.      symbols are interned.  The counter is increased by 1 at each call.
  4517.      There is no provision for resetting the counter.
  4518.  
  4519.     array-fill!
  4520.  
  4521.  - Scheme Procedure: array-fill! ra fill
  4522.      Store FILL in every element of ARRAY.  The value returned is
  4523.      unspecified.
  4524.  
  4525.     array-copy-in-order!
  4526.  
  4527.  - Scheme Procedure: array-copy-in-order!
  4528.      implemented by the C function "scm_array_copy_x"
  4529.  
  4530.     array-copy!
  4531.  
  4532.  - Scheme Procedure: array-copy! src dst
  4533.  - Scheme Procedure: array-copy-in-order! src dst
  4534.      Copy every element from vector or array SOURCE to the
  4535.      corresponding element of DESTINATION.  DESTINATION must have the
  4536.      same rank as SOURCE, and be at least as large in each dimension.
  4537.      The order is unspecified.
  4538.  
  4539.     array-map-in-order!
  4540.  
  4541.  - Scheme Procedure: array-map-in-order!
  4542.      implemented by the C function "scm_array_map_x"
  4543.  
  4544.     array-map!
  4545.  
  4546.  - Scheme Procedure: array-map! ra0 proc . lra
  4547.  - Scheme Procedure: array-map-in-order! ra0 proc . lra
  4548.      ARRAY1, ... must have the same number of dimensions as ARRAY0 and
  4549.      have a range for each index which includes the range for the
  4550.      corresponding index in ARRAY0.  PROC is applied to each tuple of
  4551.      elements of ARRAY1 ... and the result is stored as the
  4552.      corresponding element in ARRAY0.  The value returned is
  4553.      unspecified.  The order of application is unspecified.
  4554.  
  4555.     array-for-each
  4556.  
  4557.  - Scheme Procedure: array-for-each proc ra0 . lra
  4558.      Apply PROC to each tuple of elements of ARRAY0 ...  in row-major
  4559.      order.  The value returned is unspecified.
  4560.  
  4561.     array-index-map!
  4562.  
  4563.  - Scheme Procedure: array-index-map! ra proc
  4564.      Apply PROC to the indices of each element of ARRAY in turn,
  4565.      storing the result in the corresponding element.  The value
  4566.      returned and the order of application are unspecified.
  4567.  
  4568.      One can implement ARRAY-INDEXES as
  4569.           (define (array-indexes array)
  4570.               (let ((ra (apply make-array #f (array-shape array))))
  4571.                 (array-index-map! ra (lambda x x))
  4572.                 ra))
  4573.      Another example:
  4574.           (define (apl:index-generator n)
  4575.               (let ((v (make-uniform-vector n 1)))
  4576.                 (array-index-map! v (lambda (i) i))
  4577.                 v))
  4578.  
  4579.     uniform-vector-length
  4580.  
  4581.  - Scheme Procedure: uniform-vector-length v
  4582.      Return the number of elements in UVE.
  4583.  
  4584.     array?
  4585.  
  4586.  - Scheme Procedure: array? v [prot]
  4587.      Return `#t' if the OBJ is an array, and `#f' if not.  The
  4588.      PROTOTYPE argument is used with uniform arrays and is described
  4589.      elsewhere.
  4590.  
  4591.     array-rank
  4592.  
  4593.  - Scheme Procedure: array-rank ra
  4594.      Return the number of dimensions of OBJ.  If OBJ is not an array,
  4595.      `0' is returned.
  4596.  
  4597.     array-dimensions
  4598.  
  4599.  - Scheme Procedure: array-dimensions ra
  4600.      `Array-dimensions' is similar to `array-shape' but replaces
  4601.      elements with a `0' minimum with one greater than the maximum. So:
  4602.           (array-dimensions (make-array 'foo '(-1 3) 5)) => ((-1 3) 5)
  4603.  
  4604.     shared-array-root
  4605.  
  4606.  - Scheme Procedure: shared-array-root ra
  4607.      Return the root vector of a shared array.
  4608.  
  4609.     shared-array-offset
  4610.  
  4611.  - Scheme Procedure: shared-array-offset ra
  4612.      Return the root vector index of the first element in the array.
  4613.  
  4614.     shared-array-increments
  4615.  
  4616.  - Scheme Procedure: shared-array-increments ra
  4617.      For each dimension, return the distance between elements in the
  4618.      root vector.
  4619.  
  4620.     dimensions->uniform-array
  4621.  
  4622.  - Scheme Procedure: dimensions->uniform-array dims prot [fill]
  4623.  - Scheme Procedure: make-uniform-vector length prototype [fill]
  4624.      Create and return a uniform array or vector of type corresponding
  4625.      to PROTOTYPE with dimensions DIMS or length LENGTH.  If FILL is
  4626.      supplied, it's used to fill the array, otherwise PROTOTYPE is used.
  4627.  
  4628.     make-shared-array
  4629.  
  4630.  - Scheme Procedure: make-shared-array oldra mapfunc . dims
  4631.      `make-shared-array' can be used to create shared subarrays of other
  4632.      arrays.  The MAPPER is a function that translates coordinates in
  4633.      the new array into coordinates in the old array.  A MAPPER must be
  4634.      linear, and its range must stay within the bounds of the old
  4635.      array, but it can be otherwise arbitrary.  A simple example:
  4636.           (define fred (make-array #f 8 8))
  4637.           (define freds-diagonal
  4638.             (make-shared-array fred (lambda (i) (list i i)) 8))
  4639.           (array-set! freds-diagonal 'foo 3)
  4640.           (array-ref fred 3 3) => foo
  4641.           (define freds-center
  4642.             (make-shared-array fred (lambda (i j) (list (+ 3 i) (+ 3 j))) 2 2))
  4643.           (array-ref freds-center 0 0) => foo
  4644.  
  4645.     transpose-array
  4646.  
  4647.  - Scheme Procedure: transpose-array ra . args
  4648.      Return an array sharing contents with ARRAY, but with dimensions
  4649.      arranged in a different order.  There must be one DIM argument for
  4650.      each dimension of ARRAY.  DIM0, DIM1, ... should be integers
  4651.      between 0 and the rank of the array to be returned.  Each integer
  4652.      in that range must appear at least once in the argument list.
  4653.  
  4654.      The values of DIM0, DIM1, ... correspond to dimensions in the
  4655.      array to be returned, their positions in the argument list to
  4656.      dimensions of ARRAY.  Several DIMs may have the same value, in
  4657.      which case the returned array will have smaller rank than ARRAY.
  4658.  
  4659.           (transpose-array '#2((a b) (c d)) 1 0) => #2((a c) (b d))
  4660.           (transpose-array '#2((a b) (c d)) 0 0) => #1(a d)
  4661.           (transpose-array '#3(((a b c) (d e f)) ((1 2 3) (4 5 6))) 1 1 0) =>
  4662.                           #2((a 4) (b 5) (c 6))
  4663.  
  4664.     enclose-array
  4665.  
  4666.  - Scheme Procedure: enclose-array ra . axes
  4667.      DIM0, DIM1 ... should be nonnegative integers less than the rank
  4668.      of ARRAY.  ENCLOSE-ARRAY returns an array resembling an array of
  4669.      shared arrays.  The dimensions of each shared array are the same
  4670.      as the DIMth dimensions of the original array, the dimensions of
  4671.      the outer array are the same as those of the original array that
  4672.      did not match a DIM.
  4673.  
  4674.      An enclosed array is not a general Scheme array.  Its elements may
  4675.      not be set using `array-set!'.  Two references to the same element
  4676.      of an enclosed array will be `equal?' but will not in general be
  4677.      `eq?'.  The value returned by ARRAY-PROTOTYPE when given an
  4678.      enclosed array is unspecified.
  4679.  
  4680.      examples:
  4681.           (enclose-array '#3(((a b c) (d e f)) ((1 2 3) (4 5 6))) 1) =>
  4682.              #<enclosed-array (#1(a d) #1(b e) #1(c f)) (#1(1 4) #1(2 5) #1(3 6))>
  4683.           
  4684.           (enclose-array '#3(((a b c) (d e f)) ((1 2 3) (4 5 6))) 1 0) =>
  4685.              #<enclosed-array #2((a 1) (d 4)) #2((b 2) (e 5)) #2((c 3) (f 6))>
  4686.  
  4687.     array-in-bounds?
  4688.  
  4689.  - Scheme Procedure: array-in-bounds? v . args
  4690.      Return `#t' if its arguments would be acceptable to `array-ref'.
  4691.  
  4692.     array-ref
  4693.  
  4694.  - Scheme Procedure: array-ref
  4695.      implemented by the C function "scm_uniform_vector_ref"
  4696.  
  4697.     uniform-vector-ref
  4698.  
  4699.  - Scheme Procedure: uniform-vector-ref v args
  4700.  - Scheme Procedure: array-ref v . args
  4701.      Return the element at the `(index1, index2)' element in ARRAY.
  4702.  
  4703.     uniform-array-set1!
  4704.  
  4705.  - Scheme Procedure: uniform-array-set1!
  4706.      implemented by the C function "scm_array_set_x"
  4707.  
  4708.     array-set!
  4709.  
  4710.  - Scheme Procedure: array-set! v obj . args
  4711.  - Scheme Procedure: uniform-array-set1! v obj args
  4712.      Set the element at the `(index1, index2)' element in ARRAY to
  4713.      NEW-VALUE.  The value returned by array-set! is unspecified.
  4714.  
  4715.     array-contents
  4716.  
  4717.  - Scheme Procedure: array-contents ra [strict]
  4718.      If ARRAY may be "unrolled" into a one dimensional shared array
  4719.      without changing their order (last subscript changing fastest),
  4720.      then `array-contents' returns that shared array, otherwise it
  4721.      returns `#f'.  All arrays made by MAKE-ARRAY and
  4722.      MAKE-UNIFORM-ARRAY may be unrolled, some arrays made by
  4723.      MAKE-SHARED-ARRAY may not be.
  4724.  
  4725.      If the optional argument STRICT is provided, a shared array will
  4726.      be returned only if its elements are stored internally contiguous
  4727.      in memory.
  4728.  
  4729.     uniform-array-read!
  4730.  
  4731.  - Scheme Procedure: uniform-array-read! ra [port_or_fd [start [end]]]
  4732.  - Scheme Procedure: uniform-vector-read! uve [port-or-fdes] [start]
  4733.           [end]
  4734.      Attempt to read all elements of URA, in lexicographic order, as
  4735.      binary objects from PORT-OR-FDES.  If an end of file is
  4736.      encountered during uniform-array-read! the objects up to that
  4737.      point only are put into URA (starting at the beginning) and the
  4738.      remainder of the array is unchanged.
  4739.  
  4740.      The optional arguments START and END allow a specified region of a
  4741.      vector (or linearized array) to be read, leaving the remainder of
  4742.      the vector unchanged.
  4743.  
  4744.      `uniform-array-read!' returns the number of objects read.
  4745.      PORT-OR-FDES may be omitted, in which case it defaults to the value
  4746.      returned by `(current-input-port)'.
  4747.  
  4748.     uniform-array-write
  4749.  
  4750.  - Scheme Procedure: uniform-array-write v [port_or_fd [start [end]]]
  4751.  - Scheme Procedure: uniform-vector-write uve [port-or-fdes] [start]
  4752.           [end]
  4753.      Writes all elements of URA as binary objects to PORT-OR-FDES.
  4754.  
  4755.      The optional arguments START and END allow a specified region of a
  4756.      vector (or linearized array) to be written.
  4757.  
  4758.      The number of objects actually written is returned.  PORT-OR-FDES
  4759.      may be omitted, in which case it defaults to the value returned by
  4760.      `(current-output-port)'.
  4761.  
  4762.     bit-count
  4763.  
  4764.  - Scheme Procedure: bit-count b bitvector
  4765.      Return the number of occurrences of the boolean B in BITVECTOR.
  4766.  
  4767.     bit-position
  4768.  
  4769.  - Scheme Procedure: bit-position item v k
  4770.      Return the minimum index of an occurrence of BOOL in BV which is
  4771.      at least K.  If no BOOL occurs within the specified range `#f' is
  4772.      returned.
  4773.  
  4774.     bit-set*!
  4775.  
  4776.  - Scheme Procedure: bit-set*! v kv obj
  4777.      If uve is a bit-vector BV and uve must be of the same length.  If
  4778.      BOOL is `#t', uve is OR'ed into BV; If BOOL is `#f', the inversion
  4779.      of uve is AND'ed into BV.
  4780.  
  4781.      If uve is a unsigned integer vector all the elements of uve must
  4782.      be between 0 and the `length' of BV.  The bits of BV corresponding
  4783.      to the indexes in uve are set to BOOL.  The return value is
  4784.      unspecified.
  4785.  
  4786.     bit-count*
  4787.  
  4788.  - Scheme Procedure: bit-count* v kv obj
  4789.      Return
  4790.           (bit-count (bit-set*! (if bool bv (bit-invert! bv)) uve #t) #t).
  4791.      BV is not modified.
  4792.  
  4793.     bit-invert!
  4794.  
  4795.  - Scheme Procedure: bit-invert! v
  4796.      Modify BV by replacing each element with its negation.
  4797.  
  4798.     array->list
  4799.  
  4800.  - Scheme Procedure: array->list v
  4801.      Return a list consisting of all the elements, in order, of ARRAY.
  4802.  
  4803.     list->uniform-array
  4804.  
  4805.  - Scheme Procedure: list->uniform-array ndim prot lst
  4806.  - Scheme Procedure: list->uniform-vector prot lst
  4807.      Return a uniform array of the type indicated by prototype PROT
  4808.      with elements the same as those of LST.  Elements must be of the
  4809.      appropriate type, no coercions are done.
  4810.  
  4811.     array-prototype
  4812.  
  4813.  - Scheme Procedure: array-prototype ra
  4814.      Return an object that would produce an array of the same type as
  4815.      ARRAY, if used as the PROTOTYPE for `make-uniform-array'.
  4816.  
  4817.     chown
  4818.  
  4819.  - Scheme Procedure: chown object owner group
  4820.      Change the ownership and group of the file referred to by OBJECT to
  4821.      the integer values OWNER and GROUP.  OBJECT can be a string
  4822.      containing a file name or, if the platform supports fchown, a port
  4823.      or integer file descriptor which is open on the file.  The return
  4824.      value is unspecified.
  4825.  
  4826.      If OBJECT is a symbolic link, either the ownership of the link or
  4827.      the ownership of the referenced file will be changed depending on
  4828.      the operating system (lchown is unsupported at present).  If OWNER
  4829.      or GROUP is specified as `-1', then that ID is not changed.
  4830.  
  4831.     chmod
  4832.  
  4833.  - Scheme Procedure: chmod object mode
  4834.      Changes the permissions of the file referred to by OBJ.  OBJ can
  4835.      be a string containing a file name or a port or integer file
  4836.      descriptor which is open on a file (in which case `fchmod' is used
  4837.      as the underlying system call).  MODE specifies the new
  4838.      permissions as a decimal number, e.g., `(chmod "foo" #o755)'.  The
  4839.      return value is unspecified.
  4840.  
  4841.     umask
  4842.  
  4843.  - Scheme Procedure: umask [mode]
  4844.      If MODE is omitted, returns a decimal number representing the
  4845.      current file creation mask.  Otherwise the file creation mask is
  4846.      set to MODE and the previous value is returned.
  4847.  
  4848.      E.g., `(umask #o022)' sets the mask to octal 22, decimal 18.
  4849.  
  4850.     open-fdes
  4851.  
  4852.  - Scheme Procedure: open-fdes path flags [mode]
  4853.      Similar to `open' but return a file descriptor instead of a port.
  4854.  
  4855.     open
  4856.  
  4857.  - Scheme Procedure: open path flags [mode]
  4858.      Open the file named by PATH for reading and/or writing.  FLAGS is
  4859.      an integer specifying how the file should be opened.  MODE is an
  4860.      integer specifying the permission bits of the file, if it needs to
  4861.      be created, before the umask is applied.  The default is 666 (Unix
  4862.      itself has no default).
  4863.  
  4864.      FLAGS can be constructed by combining variables using `logior'.
  4865.      Basic flags are:
  4866.  
  4867.       - Variable: O_RDONLY
  4868.           Open the file read-only.
  4869.  
  4870.       - Variable: O_WRONLY
  4871.           Open the file write-only.
  4872.  
  4873.       - Variable: O_RDWR
  4874.           Open the file read/write.
  4875.  
  4876.       - Variable: O_APPEND
  4877.           Append to the file instead of truncating.
  4878.  
  4879.       - Variable: O_CREAT
  4880.           Create the file if it does not already exist.
  4881.  
  4882.      See the Unix documentation of the `open' system call for
  4883.      additional flags.
  4884.  
  4885.     close
  4886.  
  4887.  - Scheme Procedure: close fd_or_port
  4888.      Similar to close-port (*note close-port: Closing.), but also works
  4889.      on file descriptors.  A side effect of closing a file descriptor
  4890.      is that any ports using that file descriptor are moved to a
  4891.      different file descriptor and have their revealed counts set to
  4892.      zero.
  4893.  
  4894.     close-fdes
  4895.  
  4896.  - Scheme Procedure: close-fdes fd
  4897.      A simple wrapper for the `close' system call.  Close file
  4898.      descriptor FD, which must be an integer.  Unlike close (*note
  4899.      close: Ports and File Descriptors.), the file descriptor will be
  4900.      closed even if a port is using it.  The return value is
  4901.      unspecified.
  4902.  
  4903.     stat
  4904.  
  4905.  - Scheme Procedure: stat object
  4906.      Return an object containing various information about the file
  4907.      determined by OBJ.  OBJ can be a string containing a file name or
  4908.      a port or integer file descriptor which is open on a file (in
  4909.      which case `fstat' is used as the underlying system call).
  4910.  
  4911.      The object returned by `stat' can be passed as a single parameter
  4912.      to the following procedures, all of which return integers:
  4913.  
  4914.     `stat:dev'
  4915.           The device containing the file.
  4916.  
  4917.     `stat:ino'
  4918.           The file serial number, which distinguishes this file from all
  4919.           other files on the same device.
  4920.  
  4921.     `stat:mode'
  4922.           The mode of the file.  This includes file type information and
  4923.           the file permission bits.  See `stat:type' and `stat:perms'
  4924.           below.
  4925.  
  4926.     `stat:nlink'
  4927.           The number of hard links to the file.
  4928.  
  4929.     `stat:uid'
  4930.           The user ID of the file's owner.
  4931.  
  4932.     `stat:gid'
  4933.           The group ID of the file.
  4934.  
  4935.     `stat:rdev'
  4936.           Device ID; this entry is defined only for character or block
  4937.           special files.
  4938.  
  4939.     `stat:size'
  4940.           The size of a regular file in bytes.
  4941.  
  4942.     `stat:atime'
  4943.           The last access time for the file.
  4944.  
  4945.     `stat:mtime'
  4946.           The last modification time for the file.
  4947.  
  4948.     `stat:ctime'
  4949.           The last modification time for the attributes of the file.
  4950.  
  4951.     `stat:blksize'
  4952.           The optimal block size for reading or writing the file, in
  4953.           bytes.
  4954.  
  4955.     `stat:blocks'
  4956.           The amount of disk space that the file occupies measured in
  4957.           units of 512 byte blocks.
  4958.  
  4959.      In addition, the following procedures return the information from
  4960.      stat:mode in a more convenient form:
  4961.  
  4962.     `stat:type'
  4963.           A symbol representing the type of file.  Possible values are
  4964.           regular, directory, symlink, block-special, char-special,
  4965.           fifo, socket and unknown
  4966.  
  4967.     `stat:perms'
  4968.           An integer representing the access permission bits.
  4969.  
  4970.     link
  4971.  
  4972.  - Scheme Procedure: link oldpath newpath
  4973.      Creates a new name NEWPATH in the file system for the file named
  4974.      by OLDPATH.  If OLDPATH is a symbolic link, the link may or may
  4975.      not be followed depending on the system.
  4976.  
  4977.     rename-file
  4978.  
  4979.  - Scheme Procedure: rename-file oldname newname
  4980.      Renames the file specified by OLDNAME to NEWNAME.  The return
  4981.      value is unspecified.
  4982.  
  4983.     delete-file
  4984.  
  4985.  - Scheme Procedure: delete-file str
  4986.      Deletes (or "unlinks") the file specified by PATH.
  4987.  
  4988.     mkdir
  4989.  
  4990.  - Scheme Procedure: mkdir path [mode]
  4991.      Create a new directory named by PATH.  If MODE is omitted then the
  4992.      permissions of the directory file are set using the current umask.
  4993.      Otherwise they are set to the decimal value specified with MODE.
  4994.      The return value is unspecified.
  4995.  
  4996.     rmdir
  4997.  
  4998.  - Scheme Procedure: rmdir path
  4999.      Remove the existing directory named by PATH.  The directory must
  5000.      be empty for this to succeed.  The return value is unspecified.
  5001.  
  5002.     directory-stream?
  5003.  
  5004.  - Scheme Procedure: directory-stream? obj
  5005.      Return a boolean indicating whether OBJECT is a directory stream
  5006.      as returned by `opendir'.
  5007.  
  5008.     opendir
  5009.  
  5010.  - Scheme Procedure: opendir dirname
  5011.      Open the directory specified by PATH and return a directory stream.
  5012.  
  5013.     readdir
  5014.  
  5015.  - Scheme Procedure: readdir port
  5016.      Return (as a string) the next directory entry from the directory
  5017.      stream STREAM.  If there is no remaining entry to be read then the
  5018.      end of file object is returned.
  5019.  
  5020.     rewinddir
  5021.  
  5022.  - Scheme Procedure: rewinddir port
  5023.      Reset the directory port STREAM so that the next call to `readdir'
  5024.      will return the first directory entry.
  5025.  
  5026.     closedir
  5027.  
  5028.  - Scheme Procedure: closedir port
  5029.      Close the directory stream STREAM.  The return value is
  5030.      unspecified.
  5031.  
  5032.     chdir
  5033.  
  5034.  - Scheme Procedure: chdir str
  5035.      Change the current working directory to PATH.  The return value is
  5036.      unspecified.
  5037.  
  5038.     getcwd
  5039.  
  5040.  - Scheme Procedure: getcwd
  5041.      Return the name of the current working directory.
  5042.  
  5043.     select
  5044.  
  5045.  - Scheme Procedure: select reads writes excepts [secs [usecs]]
  5046.      This procedure has a variety of uses: waiting for the ability to
  5047.      provide input, accept output, or the existence of exceptional
  5048.      conditions on a collection of ports or file descriptors, or
  5049.      waiting for a timeout to occur.  It also returns if interrupted by
  5050.      a signal.
  5051.  
  5052.      READS, WRITES and EXCEPTS can be lists or vectors, with each
  5053.      member a port or a file descriptor.  The value returned is a list
  5054.      of three corresponding lists or vectors containing only the
  5055.      members which meet the specified requirement.  The ability of port
  5056.      buffers to provide input or accept output is taken into account.
  5057.      Ordering of the input lists or vectors is not preserved.
  5058.  
  5059.      The optional arguments SECS and USECS specify the timeout.  Either
  5060.      SECS can be specified alone, as either an integer or a real
  5061.      number, or both SECS and USECS can be specified as integers, in
  5062.      which case USECS is an additional timeout expressed in
  5063.      microseconds.  If SECS is omitted or is `#f' then select will wait
  5064.      for as long as it takes for one of the other conditions to be
  5065.      satisfied.
  5066.  
  5067.      The scsh version of `select' differs as follows: Only vectors are
  5068.      accepted for the first three arguments.  The USECS argument is not
  5069.      supported.  Multiple values are returned instead of a list.
  5070.      Duplicates in the input vectors appear only once in output.  An
  5071.      additional `select!' interface is provided.
  5072.  
  5073.     fcntl
  5074.  
  5075.  - Scheme Procedure: fcntl object cmd [value]
  5076.      Apply COMMAND to the specified file descriptor or the underlying
  5077.      file descriptor of the specified port.  VALUE is an optional
  5078.      integer argument.
  5079.  
  5080.      Values for COMMAND are:
  5081.  
  5082.     `F_DUPFD'
  5083.           Duplicate a file descriptor
  5084.  
  5085.     `F_GETFD'
  5086.           Get flags associated with the file descriptor.
  5087.  
  5088.     `F_SETFD'
  5089.           Set flags associated with the file descriptor to VALUE.
  5090.  
  5091.     `F_GETFL'
  5092.           Get flags associated with the open file.
  5093.  
  5094.     `F_SETFL'
  5095.           Set flags associated with the open file to VALUE
  5096.  
  5097.     `F_GETOWN'
  5098.           Get the process ID of a socket's owner, for `SIGIO' signals.
  5099.  
  5100.     `F_SETOWN'
  5101.           Set the process that owns a socket to VALUE, for `SIGIO'
  5102.           signals.
  5103.  
  5104.     `FD_CLOEXEC'
  5105.           The value used to indicate the "close on exec" flag with
  5106.           `F_GETFL' or `F_SETFL'.
  5107.  
  5108.     fsync
  5109.  
  5110.  - Scheme Procedure: fsync object
  5111.      Copies any unwritten data for the specified output file descriptor
  5112.      to disk.  If PORT/FD is a port, its buffer is flushed before the
  5113.      underlying file descriptor is fsync'd.  The return value is
  5114.      unspecified.
  5115.  
  5116.     symlink
  5117.  
  5118.  - Scheme Procedure: symlink oldpath newpath
  5119.      Create a symbolic link named PATH-TO with the value (i.e.,
  5120.      pointing to) PATH-FROM.  The return value is unspecified.
  5121.  
  5122.     readlink
  5123.  
  5124.  - Scheme Procedure: readlink path
  5125.      Return the value of the symbolic link named by PATH (a string),
  5126.      i.e., the file that the link points to.
  5127.  
  5128.     lstat
  5129.  
  5130.  - Scheme Procedure: lstat str
  5131.      Similar to `stat', but does not follow symbolic links, i.e., it
  5132.      will return information about a symbolic link itself, not the file
  5133.      it points to.  PATH must be a string.
  5134.  
  5135.     copy-file
  5136.  
  5137.  - Scheme Procedure: copy-file oldfile newfile
  5138.      Copy the file specified by PATH-FROM to PATH-TO.  The return value
  5139.      is unspecified.
  5140.  
  5141.     dirname
  5142.  
  5143.  - Scheme Procedure: dirname filename
  5144.      Return the directory name component of the file name FILENAME. If
  5145.      FILENAME does not contain a directory component, `.' is returned.
  5146.  
  5147.     basename
  5148.  
  5149.  - Scheme Procedure: basename filename [suffix]
  5150.      Return the base name of the file name FILENAME. The base name is
  5151.      the file name without any directory components.  If SUFFIX is
  5152.      provided, and is equal to the end of BASENAME, it is removed also.
  5153.  
  5154.     pipe
  5155.  
  5156.  - Scheme Procedure: pipe
  5157.      Return a newly created pipe: a pair of ports which are linked
  5158.      together on the local machine.  The _car_ is the input port and
  5159.      the _cdr_ is the output port.  Data written (and flushed) to the
  5160.      output port can be read from the input port.  Pipes are commonly
  5161.      used for communication with a newly forked child process.  The
  5162.      need to flush the output port can be avoided by making it
  5163.      unbuffered using `setvbuf'.
  5164.  
  5165.      Writes occur atomically provided the size of the data in bytes is
  5166.      not greater than the value of `PIPE_BUF'.  Note that the output
  5167.      port is likely to block if too much data (typically equal to
  5168.      `PIPE_BUF') has been written but not yet read from the input port.
  5169.  
  5170.     getgroups
  5171.  
  5172.  - Scheme Procedure: getgroups
  5173.      Return a vector of integers representing the current supplementary
  5174.      group IDs.
  5175.  
  5176.     getpw
  5177.  
  5178.  - Scheme Procedure: getpw [user]
  5179.      Look up an entry in the user database.  OBJ can be an integer, a
  5180.      string, or omitted, giving the behaviour of getpwuid, getpwnam or
  5181.      getpwent respectively.
  5182.  
  5183.     setpw
  5184.  
  5185.  - Scheme Procedure: setpw [arg]
  5186.      If called with a true argument, initialize or reset the password
  5187.      data stream.  Otherwise, close the stream.  The `setpwent' and
  5188.      `endpwent' procedures are implemented on top of this.
  5189.  
  5190.     getgr
  5191.  
  5192.  - Scheme Procedure: getgr [name]
  5193.      Look up an entry in the group database.  OBJ can be an integer, a
  5194.      string, or omitted, giving the behaviour of getgrgid, getgrnam or
  5195.      getgrent respectively.
  5196.  
  5197.     setgr
  5198.  
  5199.  - Scheme Procedure: setgr [arg]
  5200.      If called with a true argument, initialize or reset the group data
  5201.      stream.  Otherwise, close the stream.  The `setgrent' and
  5202.      `endgrent' procedures are implemented on top of this.
  5203.  
  5204.     kill
  5205.  
  5206.  - Scheme Procedure: kill pid sig
  5207.      Sends a signal to the specified process or group of processes.
  5208.  
  5209.      PID specifies the processes to which the signal is sent:
  5210.  
  5211.     PID greater than 0
  5212.           The process whose identifier is PID.
  5213.  
  5214.     PID equal to 0
  5215.           All processes in the current process group.
  5216.  
  5217.     PID less than -1
  5218.           The process group whose identifier is -PID
  5219.  
  5220.     PID equal to -1
  5221.           If the process is privileged, all processes except for some
  5222.           special system processes.  Otherwise, all processes with the
  5223.           current effective user ID.
  5224.  
  5225.      SIG should be specified using a variable corresponding to the Unix
  5226.      symbolic name, e.g.,
  5227.  
  5228.       - Variable: SIGHUP
  5229.           Hang-up signal.
  5230.  
  5231.       - Variable: SIGINT
  5232.           Interrupt signal.
  5233.  
  5234.     waitpid
  5235.  
  5236.  - Scheme Procedure: waitpid pid [options]
  5237.      This procedure collects status information from a child process
  5238.      which has terminated or (optionally) stopped.  Normally it will
  5239.      suspend the calling process until this can be done.  If more than
  5240.      one child process is eligible then one will be chosen by the
  5241.      operating system.
  5242.  
  5243.      The value of PID determines the behaviour:
  5244.  
  5245.     PID greater than 0
  5246.           Request status information from the specified child process.
  5247.  
  5248.     PID equal to -1 or WAIT_ANY
  5249.           Request status information for any child process.
  5250.  
  5251.     PID equal to 0 or WAIT_MYPGRP
  5252.           Request status information for any child process in the
  5253.           current process group.
  5254.  
  5255.     PID less than -1
  5256.           Request status information for any child process whose
  5257.           process group ID is -PID.
  5258.  
  5259.      The OPTIONS argument, if supplied, should be the bitwise OR of the
  5260.      values of zero or more of the following variables:
  5261.  
  5262.       - Variable: WNOHANG
  5263.           Return immediately even if there are no child processes to be
  5264.           collected.
  5265.  
  5266.       - Variable: WUNTRACED
  5267.           Report status information for stopped processes as well as
  5268.           terminated processes.
  5269.  
  5270.      The return value is a pair containing:
  5271.  
  5272.        1. The process ID of the child process, or 0 if `WNOHANG' was
  5273.           specified and no process was collected.
  5274.  
  5275.        2. The integer status value.
  5276.  
  5277.     status:exit-val
  5278.  
  5279.  - Scheme Procedure: status:exit-val status
  5280.      Return the exit status value, as would be set if a process ended
  5281.      normally through a call to `exit' or `_exit', if any, otherwise
  5282.      `#f'.
  5283.  
  5284.     status:term-sig
  5285.  
  5286.  - Scheme Procedure: status:term-sig status
  5287.      Return the signal number which terminated the process, if any,
  5288.      otherwise `#f'.
  5289.  
  5290.     status:stop-sig
  5291.  
  5292.  - Scheme Procedure: status:stop-sig status
  5293.      Return the signal number which stopped the process, if any,
  5294.      otherwise `#f'.
  5295.  
  5296.     getppid
  5297.  
  5298.  - Scheme Procedure: getppid
  5299.      Return an integer representing the process ID of the parent
  5300.      process.
  5301.  
  5302.     getuid
  5303.  
  5304.  - Scheme Procedure: getuid
  5305.      Return an integer representing the current real user ID.
  5306.  
  5307.     getgid
  5308.  
  5309.  - Scheme Procedure: getgid
  5310.      Return an integer representing the current real group ID.
  5311.  
  5312.     geteuid
  5313.  
  5314.  - Scheme Procedure: geteuid
  5315.      Return an integer representing the current effective user ID.  If
  5316.      the system does not support effective IDs, then the real ID is
  5317.      returned.  `(feature? 'EIDs)' reports whether the system supports
  5318.      effective IDs.
  5319.  
  5320.     getegid
  5321.  
  5322.  - Scheme Procedure: getegid
  5323.      Return an integer representing the current effective group ID.  If
  5324.      the system does not support effective IDs, then the real ID is
  5325.      returned.  `(feature? 'EIDs)' reports whether the system supports
  5326.      effective IDs.
  5327.  
  5328.     setuid
  5329.  
  5330.  - Scheme Procedure: setuid id
  5331.      Sets both the real and effective user IDs to the integer ID,
  5332.      provided the process has appropriate privileges.  The return value
  5333.      is unspecified.
  5334.  
  5335.     setgid
  5336.  
  5337.  - Scheme Procedure: setgid id
  5338.      Sets both the real and effective group IDs to the integer ID,
  5339.      provided the process has appropriate privileges.  The return value
  5340.      is unspecified.
  5341.  
  5342.     seteuid
  5343.  
  5344.  - Scheme Procedure: seteuid id
  5345.      Sets the effective user ID to the integer ID, provided the process
  5346.      has appropriate privileges.  If effective IDs are not supported,
  5347.      the real ID is set instead - `(feature? 'EIDs)' reports whether the
  5348.      system supports effective IDs.  The return value is unspecified.
  5349.  
  5350.     setegid
  5351.  
  5352.  - Scheme Procedure: setegid id
  5353.      Sets the effective group ID to the integer ID, provided the process
  5354.      has appropriate privileges.  If effective IDs are not supported,
  5355.      the real ID is set instead - `(feature? 'EIDs)' reports whether the
  5356.      system supports effective IDs.  The return value is unspecified.
  5357.  
  5358.     getpgrp
  5359.  
  5360.  - Scheme Procedure: getpgrp
  5361.      Return an integer representing the current process group ID.  This
  5362.      is the POSIX definition, not BSD.
  5363.  
  5364.     setpgid
  5365.  
  5366.  - Scheme Procedure: setpgid pid pgid
  5367.      Move the process PID into the process group PGID.  PID or PGID
  5368.      must be integers: they can be zero to indicate the ID of the
  5369.      current process.  Fails on systems that do not support job control.
  5370.      The return value is unspecified.
  5371.  
  5372.     setsid
  5373.  
  5374.  - Scheme Procedure: setsid
  5375.      Creates a new session.  The current process becomes the session
  5376.      leader and is put in a new process group.  The process will be
  5377.      detached from its controlling terminal if it has one.  The return
  5378.      value is an integer representing the new process group ID.
  5379.  
  5380.     ttyname
  5381.  
  5382.  - Scheme Procedure: ttyname port
  5383.      Return a string with the name of the serial terminal device
  5384.      underlying PORT.
  5385.  
  5386.     ctermid
  5387.  
  5388.  - Scheme Procedure: ctermid
  5389.      Return a string containing the file name of the controlling
  5390.      terminal for the current process.
  5391.  
  5392.     tcgetpgrp
  5393.  
  5394.  - Scheme Procedure: tcgetpgrp port
  5395.      Return the process group ID of the foreground process group
  5396.      associated with the terminal open on the file descriptor
  5397.      underlying PORT.
  5398.  
  5399.      If there is no foreground process group, the return value is a
  5400.      number greater than 1 that does not match the process group ID of
  5401.      any existing process group.  This can happen if all of the
  5402.      processes in the job that was formerly the foreground job have
  5403.      terminated, and no other job has yet been moved into the
  5404.      foreground.
  5405.  
  5406.     tcsetpgrp
  5407.  
  5408.  - Scheme Procedure: tcsetpgrp port pgid
  5409.      Set the foreground process group ID for the terminal used by the
  5410.      file descriptor underlying PORT to the integer PGID.  The calling
  5411.      process must be a member of the same session as PGID and must have
  5412.      the same controlling terminal.  The return value is unspecified.
  5413.  
  5414.     execl
  5415.  
  5416.  - Scheme Procedure: execl filename . args
  5417.      Executes the file named by PATH as a new process image.  The
  5418.      remaining arguments are supplied to the process; from a C program
  5419.      they are accessible as the `argv' argument to `main'.
  5420.      Conventionally the first ARG is the same as PATH.  All arguments
  5421.      must be strings.
  5422.  
  5423.      If ARG is missing, PATH is executed with a null argument list,
  5424.      which may have system-dependent side-effects.
  5425.  
  5426.      This procedure is currently implemented using the `execv' system
  5427.      call, but we call it `execl' because of its Scheme calling
  5428.      interface.
  5429.  
  5430.     execlp
  5431.  
  5432.  - Scheme Procedure: execlp filename . args
  5433.      Similar to `execl', however if FILENAME does not contain a slash
  5434.      then the file to execute will be located by searching the
  5435.      directories listed in the `PATH' environment variable.
  5436.  
  5437.      This procedure is currently implemented using the `execvp' system
  5438.      call, but we call it `execlp' because of its Scheme calling
  5439.      interface.
  5440.  
  5441.     execle
  5442.  
  5443.  - Scheme Procedure: execle filename env . args
  5444.      Similar to `execl', but the environment of the new process is
  5445.      specified by ENV, which must be a list of strings as returned by
  5446.      the `environ' procedure.
  5447.  
  5448.      This procedure is currently implemented using the `execve' system
  5449.      call, but we call it `execle' because of its Scheme calling
  5450.      interface.
  5451.  
  5452.     primitive-fork
  5453.  
  5454.  - Scheme Procedure: primitive-fork
  5455.      Creates a new "child" process by duplicating the current "parent"
  5456.      process.  In the child the return value is 0.  In the parent the
  5457.      return value is the integer process ID of the child.
  5458.  
  5459.      This procedure has been renamed from `fork' to avoid a naming
  5460.      conflict with the scsh fork.
  5461.  
  5462.     uname
  5463.  
  5464.  - Scheme Procedure: uname
  5465.      Return an object with some information about the computer system
  5466.      the program is running on.
  5467.  
  5468.     environ
  5469.  
  5470.  - Scheme Procedure: environ [env]
  5471.      If ENV is omitted, return the current environment (in the Unix
  5472.      sense) as a list of strings.  Otherwise set the current
  5473.      environment, which is also the default environment for child
  5474.      processes, to the supplied list of strings.  Each member of ENV
  5475.      should be of the form `NAME=VALUE' and values of `NAME' should not
  5476.      be duplicated.  If ENV is supplied then the return value is
  5477.      unspecified.
  5478.  
  5479.     tmpnam
  5480.  
  5481.  - Scheme Procedure: tmpnam
  5482.      Return a name in the file system that does not match any existing
  5483.      file.  However there is no guarantee that another process will not
  5484.      create the file after `tmpnam' is called.  Care should be taken if
  5485.      opening the file, e.g., use the `O_EXCL' open flag or use
  5486.      `mkstemp!' instead.
  5487.  
  5488.     mkstemp!
  5489.  
  5490.  - Scheme Procedure: mkstemp! tmpl
  5491.      Create a new unique file in the file system and returns a new
  5492.      buffered port open for reading and writing to the file.  TMPL is a
  5493.      string specifying where the file should be created: it must end
  5494.      with `XXXXXX' and will be changed in place to return the name of
  5495.      the temporary file.
  5496.  
  5497.     utime
  5498.  
  5499.  - Scheme Procedure: utime pathname [actime [modtime]]
  5500.      `utime' sets the access and modification times for the file named
  5501.      by PATH.  If ACTIME or MODTIME is not supplied, then the current
  5502.      time is used.  ACTIME and MODTIME must be integer time values as
  5503.      returned by the `current-time' procedure.
  5504.           (utime "foo" (- (current-time) 3600))
  5505.      will set the access time to one hour in the past and the
  5506.      modification time to the current time.
  5507.  
  5508.     access?
  5509.  
  5510.  - Scheme Procedure: access? path how
  5511.      Return `#t' if PATH corresponds to an existing file and the
  5512.      current process has the type of access specified by HOW, otherwise
  5513.      `#f'.  HOW should be specified using the values of the variables
  5514.      listed below.  Multiple values can be combined using a bitwise or,
  5515.      in which case `#t' will only be returned if all accesses are
  5516.      granted.
  5517.  
  5518.      Permissions are checked using the real id of the current process,
  5519.      not the effective id, although it's the effective id which
  5520.      determines whether the access would actually be granted.
  5521.  
  5522.       - Variable: R_OK
  5523.           test for read permission.
  5524.  
  5525.       - Variable: W_OK
  5526.           test for write permission.
  5527.  
  5528.       - Variable: X_OK
  5529.           test for execute permission.
  5530.  
  5531.       - Variable: F_OK
  5532.           test for existence of the file.
  5533.  
  5534.     getpid
  5535.  
  5536.  - Scheme Procedure: getpid
  5537.      Return an integer representing the current process ID.
  5538.  
  5539.     putenv
  5540.  
  5541.  - Scheme Procedure: putenv str
  5542.      Modifies the environment of the current process, which is also the
  5543.      default environment inherited by child processes.
  5544.  
  5545.      If STRING is of the form `NAME=VALUE' then it will be written
  5546.      directly into the environment, replacing any existing environment
  5547.      string with name matching `NAME'.  If STRING does not contain an
  5548.      equal sign, then any existing string with name matching STRING will
  5549.      be removed.
  5550.  
  5551.      The return value is unspecified.
  5552.  
  5553.     setlocale
  5554.  
  5555.  - Scheme Procedure: setlocale category [locale]
  5556.      If LOCALE is omitted, return the current value of the specified
  5557.      locale category as a system-dependent string.  CATEGORY should be
  5558.      specified using the values `LC_COLLATE', `LC_ALL' etc.
  5559.  
  5560.      Otherwise the specified locale category is set to the string
  5561.      LOCALE and the new value is returned as a system-dependent string.
  5562.      If LOCALE is an empty string, the locale will be set using
  5563.      environment variables.
  5564.  
  5565.     mknod
  5566.  
  5567.  - Scheme Procedure: mknod path type perms dev
  5568.      Creates a new special file, such as a file corresponding to a
  5569.      device.  PATH specifies the name of the file.  TYPE should be one
  5570.      of the following symbols: regular, directory, symlink,
  5571.      block-special, char-special, fifo, or socket.  PERMS (an integer)
  5572.      specifies the file permissions.  DEV (an integer) specifies which
  5573.      device the special file refers to.  Its exact interpretation
  5574.      depends on the kind of special file being created.
  5575.  
  5576.      E.g.,
  5577.           (mknod "/dev/fd0" 'block-special #o660 (+ (* 2 256) 2))
  5578.  
  5579.      The return value is unspecified.
  5580.  
  5581.     nice
  5582.  
  5583.  - Scheme Procedure: nice incr
  5584.      Increment the priority of the current process by INCR.  A higher
  5585.      priority value means that the process runs less often.  The return
  5586.      value is unspecified.
  5587.  
  5588.     sync
  5589.  
  5590.  - Scheme Procedure: sync
  5591.      Flush the operating system disk buffers.  The return value is
  5592.      unspecified.
  5593.  
  5594.     crypt
  5595.  
  5596.  - Scheme Procedure: crypt key salt
  5597.      Encrypt KEY using SALT as the salt value to the crypt(3) library
  5598.      call.
  5599.  
  5600.     chroot
  5601.  
  5602.  - Scheme Procedure: chroot path
  5603.      Change the root directory to that specified in PATH.  This
  5604.      directory will be used for path names beginning with `/'.  The
  5605.      root directory is inherited by all children of the current
  5606.      process.  Only the superuser may change the root directory.
  5607.  
  5608.     getlogin
  5609.  
  5610.  - Scheme Procedure: getlogin
  5611.      Return a string containing the name of the user logged in on the
  5612.      controlling terminal of the process, or `#f' if this information
  5613.      cannot be obtained.
  5614.  
  5615.     cuserid
  5616.  
  5617.  - Scheme Procedure: cuserid
  5618.      Return a string containing a user name associated with the
  5619.      effective user id of the process.  Return `#f' if this information
  5620.      cannot be obtained.
  5621.  
  5622.     getpriority
  5623.  
  5624.  - Scheme Procedure: getpriority which who
  5625.      Return the scheduling priority of the process, process group or
  5626.      user, as indicated by WHICH and WHO. WHICH is one of the variables
  5627.      `PRIO_PROCESS', `PRIO_PGRP' or `PRIO_USER', and WHO is interpreted
  5628.      relative to WHICH (a process identifier for `PRIO_PROCESS',
  5629.      process group identifier for `PRIO_PGRP', and a user identifier
  5630.      for `PRIO_USER'.  A zero value of WHO denotes the current process,
  5631.      process group, or user.  Return the highest priority (lowest
  5632.      numerical value) of any of the specified processes.
  5633.  
  5634.     setpriority
  5635.  
  5636.  - Scheme Procedure: setpriority which who prio
  5637.      Set the scheduling priority of the process, process group or user,
  5638.      as indicated by WHICH and WHO. WHICH is one of the variables
  5639.      `PRIO_PROCESS', `PRIO_PGRP' or `PRIO_USER', and WHO is interpreted
  5640.      relative to WHICH (a process identifier for `PRIO_PROCESS',
  5641.      process group identifier for `PRIO_PGRP', and a user identifier
  5642.      for `PRIO_USER'.  A zero value of WHO denotes the current process,
  5643.      process group, or user.  PRIO is a value in the range -20 and 20,
  5644.      the default priority is 0; lower priorities cause more favorable
  5645.      scheduling.  Sets the priority of all of the specified processes.
  5646.      Only the super-user may lower priorities.  The return value is not
  5647.      specified.
  5648.  
  5649.     getpass
  5650.  
  5651.  - Scheme Procedure: getpass prompt
  5652.      Display PROMPT to the standard error output and read a password
  5653.      from `/dev/tty'.  If this file is not accessible, it reads from
  5654.      standard input.  The password may be up to 127 characters in
  5655.      length.  Additional characters and the terminating newline
  5656.      character are discarded.  While reading the password, echoing and
  5657.      the generation of signals by special characters is disabled.
  5658.  
  5659.     flock
  5660.  
  5661.  - Scheme Procedure: flock file operation
  5662.      Apply or remove an advisory lock on an open file.  OPERATION
  5663.      specifies the action to be done:
  5664.     `LOCK_SH'
  5665.           Shared lock.  More than one process may hold a shared lock
  5666.           for a given file at a given time.
  5667.  
  5668.     `LOCK_EX'
  5669.           Exclusive lock.  Only one process may hold an exclusive lock
  5670.           for a given file at a given time.
  5671.  
  5672.     `LOCK_UN'
  5673.           Unlock the file.
  5674.  
  5675.     `LOCK_NB'
  5676.           Don't block when locking.  May be specified by bitwise OR'ing
  5677.           it to one of the other operations.  The return value is not
  5678.      specified. FILE may be an open file descriptor or an open file
  5679.      descriptor port.
  5680.  
  5681.     sethostname
  5682.  
  5683.  - Scheme Procedure: sethostname name
  5684.      Set the host name of the current processor to NAME. May only be
  5685.      used by the superuser.  The return value is not specified.
  5686.  
  5687.     gethostname
  5688.  
  5689.  - Scheme Procedure: gethostname
  5690.      Return the host name of the current processor.
  5691.  
  5692.     gethost
  5693.  
  5694.  - Scheme Procedure: gethost [host]
  5695.  - Scheme Procedure: gethostbyname hostname
  5696.  - Scheme Procedure: gethostbyaddr address
  5697.      Look up a host by name or address, returning a host object.  The
  5698.      `gethost' procedure will accept either a string name or an integer
  5699.      address; if given no arguments, it behaves like `gethostent' (see
  5700.      below).  If a name or address is supplied but the address can not
  5701.      be found, an error will be thrown to one of the keys:
  5702.      `host-not-found', `try-again', `no-recovery' or `no-data',
  5703.      corresponding to the equivalent `h_error' values.  Unusual
  5704.      conditions may result in errors thrown to the `system-error' or
  5705.      `misc_error' keys.
  5706.  
  5707.     getnet
  5708.  
  5709.  - Scheme Procedure: getnet [net]
  5710.  - Scheme Procedure: getnetbyname net-name
  5711.  - Scheme Procedure: getnetbyaddr net-number
  5712.      Look up a network by name or net number in the network database.
  5713.      The NET-NAME argument must be a string, and the NET-NUMBER
  5714.      argument must be an integer.  `getnet' will accept either type of
  5715.      argument, behaving like `getnetent' (see below) if no arguments are
  5716.      given.
  5717.  
  5718.     getproto
  5719.  
  5720.  - Scheme Procedure: getproto [protocol]
  5721.  - Scheme Procedure: getprotobyname name
  5722.  - Scheme Procedure: getprotobynumber number
  5723.      Look up a network protocol by name or by number.  `getprotobyname'
  5724.      takes a string argument, and `getprotobynumber' takes an integer
  5725.      argument.  `getproto' will accept either type, behaving like
  5726.      `getprotoent' (see below) if no arguments are supplied.
  5727.  
  5728.     getserv
  5729.  
  5730.  - Scheme Procedure: getserv [name [protocol]]
  5731.  - Scheme Procedure: getservbyname name protocol
  5732.  - Scheme Procedure: getservbyport port protocol
  5733.      Look up a network service by name or by service number, and return
  5734.      a network service object.  The PROTOCOL argument specifies the name
  5735.      of the desired protocol; if the protocol found in the network
  5736.      service database does not match this name, a system error is
  5737.      signalled.
  5738.  
  5739.      The `getserv' procedure will take either a service name or number
  5740.      as its first argument; if given no arguments, it behaves like
  5741.      `getservent' (see below).
  5742.  
  5743.     sethost
  5744.  
  5745.  - Scheme Procedure: sethost [stayopen]
  5746.      If STAYOPEN is omitted, this is equivalent to `endhostent'.
  5747.      Otherwise it is equivalent to `sethostent stayopen'.
  5748.  
  5749.     setnet
  5750.  
  5751.  - Scheme Procedure: setnet [stayopen]
  5752.      If STAYOPEN is omitted, this is equivalent to `endnetent'.
  5753.      Otherwise it is equivalent to `setnetent stayopen'.
  5754.  
  5755.     setproto
  5756.  
  5757.  - Scheme Procedure: setproto [stayopen]
  5758.      If STAYOPEN is omitted, this is equivalent to `endprotoent'.
  5759.      Otherwise it is equivalent to `setprotoent stayopen'.
  5760.  
  5761.     setserv
  5762.  
  5763.  - Scheme Procedure: setserv [stayopen]
  5764.      If STAYOPEN is omitted, this is equivalent to `endservent'.
  5765.      Otherwise it is equivalent to `setservent stayopen'.
  5766.  
  5767.     htons
  5768.  
  5769.  - Scheme Procedure: htons value
  5770.      Convert a 16 bit quantity from host to network byte ordering.
  5771.      VALUE is packed into 2 bytes, which are then converted and
  5772.      returned as a new integer.
  5773.  
  5774.     ntohs
  5775.  
  5776.  - Scheme Procedure: ntohs value
  5777.      Convert a 16 bit quantity from network to host byte ordering.
  5778.      VALUE is packed into 2 bytes, which are then converted and
  5779.      returned as a new integer.
  5780.  
  5781.     htonl
  5782.  
  5783.  - Scheme Procedure: htonl value
  5784.      Convert a 32 bit quantity from host to network byte ordering.
  5785.      VALUE is packed into 4 bytes, which are then converted and
  5786.      returned as a new integer.
  5787.  
  5788.     ntohl
  5789.  
  5790.  - Scheme Procedure: ntohl value
  5791.      Convert a 32 bit quantity from network to host byte ordering.
  5792.      VALUE is packed into 4 bytes, which are then converted and
  5793.      returned as a new integer.
  5794.  
  5795.     inet-aton
  5796.  
  5797.  - Scheme Procedure: inet-aton address
  5798.      Convert an IPv4 Internet address from printable string (dotted
  5799.      decimal notation) to an integer.  E.g.,
  5800.  
  5801.           (inet-aton "127.0.0.1") => 2130706433
  5802.  
  5803.     inet-ntoa
  5804.  
  5805.  - Scheme Procedure: inet-ntoa inetid
  5806.      Convert an IPv4 Internet address to a printable (dotted decimal
  5807.      notation) string.  E.g.,
  5808.  
  5809.           (inet-ntoa 2130706433) => "127.0.0.1"
  5810.  
  5811.     inet-netof
  5812.  
  5813.  - Scheme Procedure: inet-netof address
  5814.      Return the network number part of the given IPv4 Internet address.
  5815.      E.g.,
  5816.  
  5817.           (inet-netof 2130706433) => 127
  5818.  
  5819.     inet-lnaof
  5820.  
  5821.  - Scheme Procedure: inet-lnaof address
  5822.      Return the local-address-with-network part of the given IPv4
  5823.      Internet address, using the obsolete class A/B/C system.  E.g.,
  5824.  
  5825.           (inet-lnaof 2130706433) => 1
  5826.  
  5827.     inet-makeaddr
  5828.  
  5829.  - Scheme Procedure: inet-makeaddr net lna
  5830.      Make an IPv4 Internet address by combining the network number NET
  5831.      with the local-address-within-network number LNA.  E.g.,
  5832.  
  5833.           (inet-makeaddr 127 1) => 2130706433
  5834.  
  5835.     inet-pton
  5836.  
  5837.  - Scheme Procedure: inet-pton family address
  5838.      Convert a string containing a printable network address to an
  5839.      integer address.  Note that unlike the C version of this function,
  5840.      the result is an integer with normal host byte ordering.  FAMILY
  5841.      can be `AF_INET' or `AF_INET6'.  E.g.,
  5842.  
  5843.           (inet-pton AF_INET "127.0.0.1") => 2130706433
  5844.           (inet-pton AF_INET6 "::1") => 1
  5845.  
  5846.     inet-ntop
  5847.  
  5848.  - Scheme Procedure: inet-ntop family address
  5849.      Convert a network address into a printable string.  Note that
  5850.      unlike the C version of this function, the input is an integer
  5851.      with normal host byte ordering.  FAMILY can be `AF_INET' or
  5852.      `AF_INET6'.  E.g.,
  5853.  
  5854.           (inet-ntop AF_INET 2130706433) => "127.0.0.1"
  5855.           (inet-ntop AF_INET6 (- (expt 2 128) 1)) =>
  5856.           ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
  5857.  
  5858.     socket
  5859.  
  5860.  - Scheme Procedure: socket family style proto
  5861.      Return a new socket port of the type specified by FAMILY, STYLE
  5862.      and PROTO.  All three parameters are integers.  Supported values
  5863.      for FAMILY are `AF_UNIX', `AF_INET' and `AF_INET6'.  Typical
  5864.      values for STYLE are `SOCK_STREAM', `SOCK_DGRAM' and `SOCK_RAW'.
  5865.  
  5866.      PROTO can be obtained from a protocol name using `getprotobyname'.
  5867.      A value of zero specifies the default protocol, which is usually
  5868.      right.
  5869.  
  5870.      A single socket port cannot by used for communication until it has
  5871.      been connected to another socket.
  5872.  
  5873.     socketpair
  5874.  
  5875.  - Scheme Procedure: socketpair family style proto
  5876.      Return a pair of connected (but unnamed) socket ports of the type
  5877.      specified by FAMILY, STYLE and PROTO.  Many systems support only
  5878.      socket pairs of the `AF_UNIX' family.  Zero is likely to be the
  5879.      only meaningful value for PROTO.
  5880.  
  5881.     getsockopt
  5882.  
  5883.  - Scheme Procedure: getsockopt sock level optname
  5884.      Return the value of a particular socket option for the socket port
  5885.      SOCK.  LEVEL is an integer code for type of option being
  5886.      requested, e.g., `SOL_SOCKET' for socket-level options.  OPTNAME
  5887.      is an integer code for the option required and should be specified
  5888.      using one of the symbols `SO_DEBUG', `SO_REUSEADDR' etc.
  5889.  
  5890.      The returned value is typically an integer but `SO_LINGER' returns
  5891.      a pair of integers.
  5892.  
  5893.     setsockopt
  5894.  
  5895.  - Scheme Procedure: setsockopt sock level optname value
  5896.      Set the value of a particular socket option for the socket port
  5897.      SOCK.  LEVEL is an integer code for type of option being set,
  5898.      e.g., `SOL_SOCKET' for socket-level options.  OPTNAME is an
  5899.      integer code for the option to set and should be specified using
  5900.      one of the symbols `SO_DEBUG', `SO_REUSEADDR' etc.  VALUE is the
  5901.      value to which the option should be set.  For most options this
  5902.      must be an integer, but for `SO_LINGER' it must be a pair.
  5903.  
  5904.      The return value is unspecified.
  5905.  
  5906.     shutdown
  5907.  
  5908.  - Scheme Procedure: shutdown sock how
  5909.      Sockets can be closed simply by using `close-port'. The `shutdown'
  5910.      procedure allows reception or transmission on a connection to be
  5911.      shut down individually, according to the parameter HOW:
  5912.  
  5913.     0
  5914.           Stop receiving data for this socket.  If further data
  5915.           arrives,  reject it.
  5916.  
  5917.     1
  5918.           Stop trying to transmit data from this socket.  Discard any
  5919.           data waiting to be sent.  Stop looking for acknowledgement of
  5920.           data already sent; don't retransmit it if it is lost.
  5921.  
  5922.     2
  5923.           Stop both reception and transmission.
  5924.  
  5925.      The return value is unspecified.
  5926.  
  5927.     connect
  5928.  
  5929.  - Scheme Procedure: connect sock fam address . args
  5930.      Initiate a connection from a socket using a specified address
  5931.      family to the address specified by ADDRESS and possibly ARGS.  The
  5932.      format required for ADDRESS and ARGS depends on the family of the
  5933.      socket.
  5934.  
  5935.      For a socket of family `AF_UNIX', only ADDRESS is specified and
  5936.      must be a string with the filename where the socket is to be
  5937.      created.
  5938.  
  5939.      For a socket of family `AF_INET', ADDRESS must be an integer IPv4
  5940.      host address and ARGS must be a single integer port number.
  5941.  
  5942.      For a socket of family `AF_INET6', ADDRESS must be an integer IPv6
  5943.      host address and ARGS may be up to three integers: port [flowinfo]
  5944.      [scope_id], where flowinfo and scope_id default to zero.
  5945.  
  5946.      The return value is unspecified.
  5947.  
  5948.     bind
  5949.  
  5950.  - Scheme Procedure: bind sock fam address . args
  5951.      Assign an address to the socket port SOCK.  Generally this only
  5952.      needs to be done for server sockets, so they know where to look
  5953.      for incoming connections.  A socket without an address will be
  5954.      assigned one automatically when it starts communicating.
  5955.  
  5956.      The format of ADDRESS and ARGS depends on the family of the socket.
  5957.  
  5958.      For a socket of family `AF_UNIX', only ADDRESS is specified and
  5959.      must be a string with the filename where the socket is to be
  5960.      created.
  5961.  
  5962.      For a socket of family `AF_INET', ADDRESS must be an integer IPv4
  5963.      address and ARGS must be a single integer port number.
  5964.  
  5965.      The values of the following variables can also be used for ADDRESS:
  5966.  
  5967.       - Variable: INADDR_ANY
  5968.           Allow connections from any address.
  5969.  
  5970.       - Variable: INADDR_LOOPBACK
  5971.           The address of the local host using the loopback device.
  5972.  
  5973.       - Variable: INADDR_BROADCAST
  5974.           The broadcast address on the local network.
  5975.  
  5976.       - Variable: INADDR_NONE
  5977.           No address.
  5978.  
  5979.      For a socket of family `AF_INET6', ADDRESS must be an integer IPv6
  5980.      address and ARGS may be up to three integers: port [flowinfo]
  5981.      [scope_id], where flowinfo and scope_id default to zero.
  5982.  
  5983.      The return value is unspecified.
  5984.  
  5985.     listen
  5986.  
  5987.  - Scheme Procedure: listen sock backlog
  5988.      Enable SOCK to accept connection requests.  BACKLOG is an integer
  5989.      specifying the maximum length of the queue for pending connections.
  5990.      If the queue fills, new clients will fail to connect until the
  5991.      server calls `accept' to accept a connection from the queue.
  5992.  
  5993.      The return value is unspecified.
  5994.  
  5995.     accept
  5996.  
  5997.  - Scheme Procedure: accept sock
  5998.      Accept a connection on a bound, listening socket.  If there are no
  5999.      pending connections in the queue, wait until one is available
  6000.      unless the non-blocking option has been set on the socket.
  6001.  
  6002.      The return value is a pair in which the _car_ is a new socket port
  6003.      for the connection and the _cdr_ is an object with address
  6004.      information about the client which initiated the connection.
  6005.  
  6006.      SOCK does not become part of the connection and will continue to
  6007.      accept new requests.
  6008.  
  6009.     getsockname
  6010.  
  6011.  - Scheme Procedure: getsockname sock
  6012.      Return the address of SOCK, in the same form as the object
  6013.      returned by `accept'.  On many systems the address of a socket in
  6014.      the `AF_FILE' namespace cannot be read.
  6015.  
  6016.     getpeername
  6017.  
  6018.  - Scheme Procedure: getpeername sock
  6019.      Return the address that SOCK is connected to, in the same form as
  6020.      the object returned by `accept'.  On many systems the address of a
  6021.      socket in the `AF_FILE' namespace cannot be read.
  6022.  
  6023.     recv!
  6024.  
  6025.  - Scheme Procedure: recv! sock buf [flags]
  6026.      Receive data from a socket port.  SOCK must already be bound to
  6027.      the address from which data is to be received.  BUF is a string
  6028.      into which the data will be written.  The size of BUF limits the
  6029.      amount of data which can be received: in the case of packet
  6030.      protocols, if a packet larger than this limit is encountered then
  6031.      some data will be irrevocably lost.
  6032.  
  6033.      The optional FLAGS argument is a value or bitwise OR of MSG_OOB,
  6034.      MSG_PEEK, MSG_DONTROUTE etc.
  6035.  
  6036.      The value returned is the number of bytes read from the socket.
  6037.  
  6038.      Note that the data is read directly from the socket file
  6039.      descriptor: any unread buffered port data is ignored.
  6040.  
  6041.     send
  6042.  
  6043.  - Scheme Procedure: send sock message [flags]
  6044.      Transmit the string MESSAGE on a socket port SOCK.  SOCK must
  6045.      already be bound to a destination address.  The value returned is
  6046.      the number of bytes transmitted - it's possible for this to be
  6047.      less than the length of MESSAGE if the socket is set to be
  6048.      non-blocking.  The optional FLAGS argument is a value or bitwise
  6049.      OR of MSG_OOB, MSG_PEEK, MSG_DONTROUTE etc.
  6050.  
  6051.      Note that the data is written directly to the socket file
  6052.      descriptor: any unflushed buffered port data is ignored.
  6053.  
  6054.     recvfrom!
  6055.  
  6056.  - Scheme Procedure: recvfrom! sock str [flags [start [end]]]
  6057.      Return data from the socket port SOCK and also information about
  6058.      where the data was received from.  SOCK must already be bound to
  6059.      the address from which data is to be received.  `str', is a string
  6060.      into which the data will be written.  The size of STR limits the
  6061.      amount of data which can be received: in the case of packet
  6062.      protocols, if a packet larger than this limit is encountered then
  6063.      some data will be irrevocably lost.
  6064.  
  6065.      The optional FLAGS argument is a value or bitwise OR of `MSG_OOB',
  6066.      `MSG_PEEK', `MSG_DONTROUTE' etc.
  6067.  
  6068.      The value returned is a pair: the _car_ is the number of bytes
  6069.      read from the socket and the _cdr_ an address object in the same
  6070.      form as returned by `accept'.  The address will given as `#f' if
  6071.      not available, as is usually the case for stream sockets.
  6072.  
  6073.      The START and END arguments specify a substring of STR to which
  6074.      the data should be written.
  6075.  
  6076.      Note that the data is read directly from the socket file
  6077.      descriptor: any unread buffered port data is ignored.
  6078.  
  6079.     sendto
  6080.  
  6081.  - Scheme Procedure: sendto sock message fam address . args_and_flags
  6082.      Transmit the string MESSAGE on the socket port SOCK.  The
  6083.      destination address is specified using the FAM, ADDRESS and
  6084.      ARGS_AND_FLAGS arguments, in a similar way to the `connect'
  6085.      procedure.  ARGS_AND_FLAGS contains the usual connection arguments
  6086.      optionally followed by a flags argument, which is a value or
  6087.      bitwise OR of MSG_OOB, MSG_PEEK, MSG_DONTROUTE etc.
  6088.  
  6089.      The value returned is the number of bytes transmitted - it's
  6090.      possible for this to be less than the length of MESSAGE if the
  6091.      socket is set to be non-blocking.  Note that the data is written
  6092.      directly to the socket file descriptor: any unflushed buffered
  6093.      port data is ignored.
  6094.  
  6095.     regexp?
  6096.  
  6097.  - Scheme Procedure: regexp? obj
  6098.      Return `#t' if OBJ is a compiled regular expression, or `#f'
  6099.      otherwise.
  6100.  
  6101.     make-regexp
  6102.  
  6103.  - Scheme Procedure: make-regexp pat . flags
  6104.      Compile the regular expression described by PAT, and return the
  6105.      compiled regexp structure.  If PAT does not describe a legal
  6106.      regular expression, `make-regexp' throws a
  6107.      `regular-expression-syntax' error.
  6108.  
  6109.      The FLAGS arguments change the behavior of the compiled regular
  6110.      expression.  The following flags may be supplied:
  6111.  
  6112.     `regexp/icase'
  6113.           Consider uppercase and lowercase letters to be the same when
  6114.           matching.
  6115.  
  6116.     `regexp/newline'
  6117.           If a newline appears in the target string, then permit the
  6118.           `^' and `$' operators to match immediately after or
  6119.           immediately before the newline, respectively.  Also, the `.'
  6120.           and `[^...]' operators will never match a newline character.
  6121.           The intent of this flag is to treat the target string as a
  6122.           buffer containing many lines of text, and the regular
  6123.           expression as a pattern that may match a single one of those
  6124.           lines.
  6125.  
  6126.     `regexp/basic'
  6127.           Compile a basic ("obsolete") regexp instead of the extended
  6128.           ("modern") regexps that are the default.  Basic regexps do
  6129.           not consider `|', `+' or `?' to be special characters, and
  6130.           require the `{...}' and `(...)' metacharacters to be
  6131.           backslash-escaped (*note Backslash Escapes::).  There are
  6132.           several other differences between basic and extended regular
  6133.           expressions, but these are the most significant.
  6134.  
  6135.     `regexp/extended'
  6136.           Compile an extended regular expression rather than a basic
  6137.           regexp.  This is the default behavior; this flag will not
  6138.           usually be needed.  If a call to `make-regexp' includes both
  6139.           `regexp/basic' and `regexp/extended' flags, the one which
  6140.           comes last will override the earlier one.
  6141.  
  6142.     regexp-exec
  6143.  
  6144.  - Scheme Procedure: regexp-exec rx str [start [flags]]
  6145.      Match the compiled regular expression RX against `str'.  If the
  6146.      optional integer START argument is provided, begin matching from
  6147.      that position in the string.  Return a match structure describing
  6148.      the results of the match, or `#f' if no match could be found.
  6149.  
  6150.      The FLAGS arguments change the matching behavior.  The following
  6151.      flags may be supplied:
  6152.  
  6153.     `regexp/notbol'
  6154.           Operator `^' always fails (unless `regexp/newline' is used).
  6155.           Use this when the beginning of the string should not be
  6156.           considered the beginning of a line.
  6157.  
  6158.     `regexp/noteol'
  6159.           Operator `$' always fails (unless `regexp/newline' is used).
  6160.           Use this when the end of the string should not be considered
  6161.           the end of a line.
  6162.  
  6163.